【问题标题】:Adding an attribute to the <input> tag for a django ModelForm field将属性添加到 django ModelForm 字段的 <input> 标记
【发布时间】:2011-05-19 12:14:37
【问题描述】:

我有一个 django 模型,我使用 ModelForm 将其显示为表单。在大多数情况下,默认设置对我来说效果很好。

但是,我希望我的 html &lt;input ...&gt; 标记具有一个附加属性,即我想包含一个 placeholder 属性,如下所示:

<input placeholder="{{field.label}}" ... />

将此属性添加到我的 html 的最简单方法是什么?据我所知,我似乎需要实现自己的过滤器来输出该字段,但是当我想要做的就是不理会所有事情但添加一个额外的属性时,这似乎有点过头了。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    documentation

    class AuthorForm(ModelForm):
        class Meta:
            model = Author
            widgets = {
                'name': TextInput(attrs={'placeholder': 'name'}),
            }
    

    您始终可以创建自己的小部件,该小部件从 TextInput 派生并包含占位符属性,并使用小部件字典将字段简单地映射到您的新小部件,而无需为每个字段指定占位符属性。

    【讨论】:

      【解决方案2】:

      我个人更喜欢使用这种方法:

      def __init__(self, *args, **kwargs):
          super(MyForm, self).__init__(*args, **kwargs)
          self.fields['email'].widget.attrs['placeholder'] = self.fields['email'].label or 'email@address.nl'
      

      如果您还没有__init__,则需要更多代码,但您不需要指定小部件。

      【讨论】:

      • 工作就像一个魅力
      猜你喜欢
      • 2017-03-07
      • 2015-06-25
      • 2018-03-14
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 2011-07-14
      • 2011-06-07
      相关资源
      最近更新 更多