我有一个'inlineformset_factory',我正在尝试弄清楚如何为各个字段设置属性。我没有想出任何方法来添加它们除了使用javascript(这将是hacky和坏)。
最后我想要像:
<input id="id_authorbook_set-0-title" type="text" name="authorbook_set-0-title" maxlength="255" placeholder="Title" autofocus="autofocus">
我知道在使用普通表单甚至使用attrs={'foo': 'bar', 'placeholder': 'Username'}
的ModelForms时可以添加自定义属性,但是无法找到任何方法对formset工厂执行相同操作。
有解决方案吗? 谢谢你的帮助。
答案 0 :(得分:0)
您描述为工作的attrs
参数被传递给表单小部件,这意味着您需要表单字段,因此需要表单。
inlineformset_factory
是ModelForms的formset_factory
。
将两者绑在一起,您需要定义一个自定义ModelForm
并将其作为form
参数传递给工厂。
您还可以定义一个自定义formset,它遍历活动表单,执行相同的覆盖,并将其传递给inlineformset_factory
。
class MyMF(forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
super(MyMF, self).__init__(*args, **kwargs)
self.fields['foo'].widget.attrs = {'foo': 'bar'}
inlineformset_factory(form=MyMF)