将类添加到<p>标记中以获取ModelForm </p>的字段

时间:2014-11-09 10:17:59

标签: python django django-forms

我正在使用带有额外字段my_field的ModelForm:

class MyForm(forms.ModelForm):

    my_field = forms.CharField()

    class Meta:
        model = MyModel

在模板中,我显示带有as_p()功能的表单。使用上面的代码,它将额外字段呈现为:

<p><label for="id_my_field">My field :</label> <input id="id_my_field" name="my_field" type="text" /></p>

如何仅为此字段的<p>标记添加类?我想:

<p class="special_field"><label ...

通过查看django / forms / forms.py,似乎我必须使用css_classes,但我不知道如何。

2 个答案:

答案 0 :(得分:0)

1)手动渲染字段https://docs.djangoproject.com/en/dev/topics/forms/#rendering-fields-manually

2)覆盖as_p方法:

class MyForm(forms.ModelForm):
    def as_p(self):
        ...

3)如果您想要自定义表单并进行最少的更改,请查看django-crispy-forms http://django-crispy-forms.readthedocs.org/en/latest/

答案 1 :(得分:0)

如果您要为必填字段提供不同的css类,请定义required_css_class属性:

class MyForm(forms.ModelForm):
    my_field = forms.CharField()

    required_css_class = 'special_field'  # <----

    class Meta:
        model = MyModel