【发布时间】:2016-05-15 09:22:09
【问题描述】:
假设我有以下模型
class Application(models.Model):
occupation = models.TextField()
和形式
class ApplicationForm(forms.ModelForm):
def __init__(self, *args, **kwargs)
super().__init__(*args, **kwargs)
self.fields['occupation'] = forms.MultipleChoiceField(choices=OCCUPATION_CHOICES, widget=CheckboxSelectMultiple)
class Meta:
model = Application
当我将它与实例一起使用时(例如通过管理员),未选择选项。
我做错了什么?
编辑: 澄清:当我选择一些选项时,我点击提交保存数据。它们在数据库中看起来像 ['undergraduate', 'postdoc']。但它们不再在表单中检查。
【问题讨论】:
-
你的
super调用有误,应该是super(ApplicationForm, self).__init__(*args, **kwargs) -
不,在 python3 中你不必这样写。 docs.python.org/3/library/functions.html#super
-
您忘记在您的
Applicationmodel 中的occupation字段中添加choices=OCCUPATION_CHOICES。 -
如果我在那里添加它,我会收到以下错误:选择一个有效的选择。 ['postdoc', 'professor'] 不是可用的选择之一。
-
OCCUPATION_CHOICES包含什么?
标签: django checkbox django-forms