我正在尝试为我的 Django 表单上的某些输入元素添加一个类属性,但我不确定具体如何做到这一点。目前我只有一个placeholder
属性,我想开始添加类/id,以便我可以设置表单样式。我有两个问题。第一个是我将如何在以下代码中将类/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'}),
}
其次,在我这样做之后,我需要进行迁移/迁移吗?据我了解,每当进行数据库级别更改时,您都需要迁移,但我不确定这完全意味着什么。
任何见解总是非常感谢。 谢谢
首先,要将类添加到小部件中,只需以与占位符 attr 相同的方式声明它。例如。。。
widgets = {
'description': forms.TextInput(attrs={'class': 'my_class', 'placeholder': 'Motto'},)
}
其次,您应该在更改模型时执行迁移/迁移。为了将数据库表调整为新模型。阅读 Django 文档了解详细信息。
您可以使用小部件调整。借助此功能,您可以在输入中添加类并编辑其他属性。这是一个很好的教程。
下面我改变了你的表格。对于您的第二个问题Do you need to call makemigration?
答案是否定的。您只需在 models.py 中进行任何更改时调用makemigration和迁移,用于 views.py 或 forms.py 等。你不需要。
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。