2010-12-03 51 views
19

我有一个django模型,我使用ModelForm作为表单显示。大多数情况下,默认值对我来说工作得很好。添加一个属性到<input>标签为Django的ModelForm字段

不过,我想我的html <input ...>标签有一个附加属性,也就是我想包括placeholder属性,如下所示:

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

什么是这个属性添加到最简单的方法我的HTML?据我所知,我需要实现我自己的过滤器来输出字段,但是当我想要做的事情是让所有东西孤单但添加一个附加属性时,这看起来像是矫枉过正。

回答

25

documentation

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

你总是可以创建自己的小部件,从的TextInput派生,包括占位符属性,并使用小工具字典只是字段映射到您的新的widget,而无需指定占位符属性的每个领域。

11

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

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

,如果你没有做__init__尚未它需要更多的代码,但你并不需要指定的窗口小部件。

相关问题