我有一个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类?
答案 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'}))