如何在不使用类Meta的情况下将属性分配给form.py中的表单元素?

时间:2019-03-26 00:29:25

标签: django django-forms

我有一个django表单设置,如下所示:

from django import forms

class ContactForm(forms.Form):
    full_name = forms.CharField(max_length=20)
    phone = forms.CharField(max_length=20)
    email = forms.CharField(max_length=30)
    message = forms.CharField(max_length=400)

    class Meta:
        fields = ['full_name', 'phone', 'email', 'message']

        widgets = {
        'full_name': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Full Name'}),
        'phone': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Phone Number'}),
        'email': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'E-Mail Address'}),
        'message': forms.TextInput(attrs={'class': 'dis-block s-text7 size20 bo4 p-l-22 p-r-22 p-t-13 m-b-20', 'placeholder': 'Message'}),
        }

哪个工作正常。但是,我最近了解到class Meta仅可用于ModelForms。

我需要在form.py中的表单中分配上述属性。我知道混合业务和表示逻辑是一种不好的做法,但是目前我正在处理一个复杂的付费Web模板,并且到目前为止,使用模板标记应用属性的方法还没有奏效。鉴于我已经到了最后期限,因此我将推迟将属性分配为v2功能。

我的问题是,如果Meta类只能与具有相应模型的表单一起使用,我该如何为不属于模型的表单中的表单小部件分配属性,从而不能使用Meta类?

1 个答案:

答案 0 :(得分:1)

您可以使用inline widgets

使用的示例如下:

class CommentForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
    url = forms.URLField()
    comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'}))