我似乎找不到这是否/如何可能。但是假设我有一个表单:
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
- 在init中的kwargs中添加{"前缀":"foo"},传递 魔法例如:
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">
以及所有的标签。