尝试将类属性添加到Django表单上的input元素。

时间:2018-10-20 04:28:57

标签: django forms styles

我正在尝试将类属性添加到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'}),
            }

其次,这样做之后,我是否需要进行迁移/迁移?据我了解,您需要在进行数据库级别更改时进行迁移,但是我不确定这到底意味着什么。

任何见识总是受到高度赞赏。 谢谢

3 个答案:

答案 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_descriptionid_city,即可在浏览器开发人员工具中检查ID。