Автоматическое именование связанных полей Django: изменение части формы
Я не могу найти, возможно ли это. Но, скажем, у меня есть форма:
class Detform(ModelForm):
class Meta:
model = Ap_detcmd
fields = ["foo"]
Formset = inlineformset_factory(ParentModel, ChildModel,
form=Detform,
can_delete=False,
extra=0)
Затем в шаблоне это отображается, например, в форме управления (или в любом поле):
<input type="hidden" name="ap_detcmd-TOTAL_FORMS" value="0" id="id_ap_detcmd-TOTAL_FORMS">
Поскольку модель формы - "Ap_detcmd", то я получаю #id_ap_detcmd-.... в качестве префикса для всех полей.
Есть ли способ указать этот префикс?
Хорошо, вкратце:
- Подкласс BaseInlineFormset
- добавьте {"prefix": "foo"} к kwargs в init & передайте это дальше .
- Magic
Например:
class MyBaseInlineFormset(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
kwargs["prefix"] = "foo"
super().__init__(*args, **kwargs)
Тогда ваше объявление inlineformset будет выглядеть так:
DetPoFormset = inlineformset_factory(Ap_entcmd, Ap_detcmd, form=Detform, formset=MyBaseInlineFormset, can_delete=True, extra=0)
Тогда вход вашей формы управления (id_XXX-TOTAL_FORMS и т.д.) будет выглядеть так:
<input type="hidden" name="foo-TOTAL_FORMS" value="0" id="id_foo-TOTAL_FORMS">
а также все теги в наборе форм.