【发布时间】:2010-08-07 20:27:03
【问题描述】:
如果我在 Django 中覆盖 ModelForm 的字段,我试图理解为什么我不能为表单字段的小部件指定选项。如果我给字段选择而不是小部件,它会起作用。我的理解是/是,如果您为字段提供选择,它将被传递到小部件进行渲染。我知道我可以让它与下面的前三个 sn-ps 中的任何一个一起工作,但我只是想完全理解为什么这种方法不起作用。
这是我的 ModelForm 代码,谢谢!
from django import forms
from models import Guest
class RSVPForm(forms.ModelForm):
class Meta:
model = Guest
def __init__(self, *args, **kwargs):
"""
Override a form's field to change the widget
"""
super(RSVPForm, self).__init__(*args, **kwargs)
# This works
self.fields['attending_ceremony'].required = True
self.fields['attending_ceremony'].widget=forms.RadioSelect(choices=Guest.CHOICES)
# This works
self.fields['attending_ceremony'].required = True
self.fields['attending_ceremony'].widget=forms.RadioSelect()
self.fields['attending_ceremony'].choices=Guest.CHOICES
# This works
self.fields['attending_ceremony'] = forms.TypedChoiceField(
required=True,
widget=forms.RadioSelect,
choices=Guest.CHOICES
)
# This doesn't - the choices aren't set (it's an empty list)
self.fields['attending_ceremony'] = forms.TypedChoiceField(
required=True,
widget=forms.RadioSelect(choices=Guest.CHOICES)
)
【问题讨论】:
标签: python django django-forms