【问题标题】:How do I add custom field attributes with an inlineformset_factory?如何使用 inlineformset_factory 添加自定义字段属性?
【发布时间】:2012-08-17 04:29:02
【问题描述】:

我有一个“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 时可以添加自定义属性,但无法找到任何方法对表单集工厂执行相同操作。

有解决办法吗? 感谢您的帮助。

【问题讨论】:

  • 您是否需要在运行时将值传递给表单集使用的表单?
  • @Brandon 不是。我只需要某些字段的静态属性。

标签: javascript html django forms django-forms


【解决方案1】:

你所描述的工作,attrs 参数,被传递给一个表单小部件,这意味着你需要表单字段,因此需要一个表单。

inlineformset_factory 是 ModelForms 的 formset_factory

将两者结合在一起,您需要定义一个自定义 ModelForm 并将其作为 form 参数传递给工厂。

您还可以定义一个自定义表单集,它遍历活动表单,执行相同的覆盖,并将其传递给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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2018-02-26
    • 1970-01-01
    • 2021-04-28
    • 2012-01-13
    • 1970-01-01
    • 2016-08-04
    相关资源
    最近更新 更多