如何使用inlineformset_factory添加自定义字段属性?

时间:2012-08-21 19:09:40

标签: javascript html django forms django-forms

我有一个'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工厂执行相同操作。

有解决方案吗? 谢谢你的帮助。

1 个答案:

答案 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)