我正在尝试将类属性添加到Django表单上的某些输入元素,但是我不确定如何具体执行。目前,我只有一个placeholder
属性,并且我想开始添加类/ id,以便为表单设置样式。我有两个问题。第一个是如何在以下代码中将class / id属性添加到现有的占位符属性:
forms.py
class EditUserProfileForm(forms.ModelForm):
class Meta:
model = models.UserProfile
fields = '__all__'
widgets = {
'description': forms.TextInput(attrs={'placeholder': 'Motto'}),
'city': forms.TextInput(attrs={'placeholder': 'City'}),
'website': forms.TextInput(attrs={'placeholder': 'Website/Brand'}),
'phone': forms.TextInput(attrs={'placeholder': 'Phone Number'}),
}
其次,这样做之后,我是否需要进行迁移/迁移?据我了解,您需要在进行数据库级别更改时进行迁移,但是我不确定这到底意味着什么。
任何见识总是受到高度赞赏。 谢谢
答案 0 :(得分:0)
首先,要将类添加到窗口小部件,只需像对占位符attr一样进行声明即可。例如...
widgets = {
'description': forms.TextInput(attrs={'class': 'my_class', 'placeholder': 'Motto'},)
}
第二,每当更改模型时,都应执行makemigrations / migration。为了将您的数据库表调整为新模型。有关详细信息,请阅读Django文档。
答案 1 :(得分:0)
您可以使用Widget Tweaks。借助于此,您可以将类添加到输入中,还可以编辑其他属性。 tutorial很好。
这是最好的选择。
答案 2 :(得分:0)
以下,我已经更改了您的表格。关于第二个问题Do you need to call makemigration?
的答案是“否”。当您对models.py,views.py或forms.py等进行任何更改时,只需调用makemigration和migration即可。
class EditUserProfileForm(forms.ModelForm):
class Meta:
model = models.UserProfile
fields = '__all__'
widgets = {
'description': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Motto'}),
'city': forms.TextInput(attrs={'class':'#add class name','placeholder': 'City'}),
'website': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Website/Brand'}),
'phone': forms.TextInput(attrs={'class':'#add class name','placeholder': 'Phone Number'}),
}
注意:除非有特殊要求,否则您也无需添加类名。如果要添加CSS的类名,则只需编写id_description
,id_city
,即可在浏览器开发人员工具中检查ID。