我需要一个 MultipleChoiceField 用于在线注册申请。当我尝试在字段中使用它们时,出现未知字段错误。它们也不会出现在管理面板中。
# models.py
...
CHILDCARE_REASONS = (('Working', 'working'),('Training', 'training'),('Teen Parent', 'teen_parent'),('Working W/Child With A Disability', 'child_disability'),('Adult W/Disability', 'adult_disability'),)
reasons_for_childcare = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=CHILDCARE_REASONS)
...
# forms.py
class EnrollForm(forms.ModelForm):
class Meta:
model = EnrollmentApplication
fields = [
...
'reasons_for_childcare ',
...
]
请您参考如下方法:
不要在模型中使用表单字段,这是不对的。对于多项选择字段,我推荐 django-multiselectfield相反。
你需要改变元组的顺序,正确的方式是键在前,值在后。
在您的字段字符串“reasons_for_childcare”的末尾有一个额外的空格。
因此,考虑到这一点,解决方案将如下所示:
模型.py
from multiselectfield import MultiSelectField
class EnrollmentApplication(models.Model):
CHILDCARE_REASONS = (('working', 'Working'),
('training', 'Training'),
('teen_parent', 'Teen Parent'),
('child_disability', 'Working W/Child With A Disability'),
('adult_disability', 'Adult W/Disability'))
reasons_for_childcare = MultiSelectField(choices=CHILDCARE_REASONS)
表单.py
class EnrollForm(forms.ModelForm):
class Meta:
model = EnrollmentApplication
fields = [
'reasons_for_childcare',
]
