如何为我的formset中的字段添加新的class属性?我认为它将沿着这些代码行,但是在formset对象中不存在属性字段。
55 # create the formset
56 ItemUserDetailsFormset = modelformset_factory(CartItemUserDetails,
57 exclude=['cart', 'cart_item'], formset=BaseItemUserDetailsFormset)
37 class BaseItemUserDetailsFormset(BaseModelFormSet):
38 def __init__(self, *args, **kwargs):
39 super(BaseItemUserDetailsFormset, self).__init__(*args, **kwargs)
40 self.fields['first_name'].widgets = forms.TextInput(attrs={"class":"required"})
答案 0 :(得分:3)
您正尝试在 formset 上设置fields
属性。您需要在表单类上设置它,而不是 formset 类。
所以,你需要像...这样的东西。
class ItemUserDetailsForm(forms.ModelForm):
class Meta:
model = CartItemUserDetails
def __init__(self, *args, **kwargs):
super(ItemUserDetailsForm, self).__init__(*args, **kwargs)
self.fields['first_name'].widget = forms.TextInput(attrs={ 'class': 'required' })
# [...]
ItemUserDetailsFormset = modelformset_factory(CartItemUserDetails,
form=ItemUserDetailsForm,
exclude=['cart', 'cart_item'],
)
可悲的是,我扫描了文档,但没有在Django文档中看到form
关键字参数的文档,但是如果你看the modelform_factory
function itself就会清楚地看到它(见第371行)。
另外,如果您正在更改的唯一内容是小部件属性,并且如果您使用的是Django&gt; = 1.2(您应该这样),则表单上有slightly simpler syntax:< / p>
class ItemUserDetailsForm(forms.ModelForm):
class Meta:
model = CartItemUserDetails
widgets = {
'first_name': forms.TextInput(attrs={ 'class': 'required' }),
# [...]
}