【发布时间】:2015-09-25 18:46:55
【问题描述】:
我有一个这样的复选框选择字段:
models.py
TYPE_CHOICES = (
('s', 'small'),
('m', 'medium'),
('b', 'big'),
)
class Post(models.Model) :
size = models.CharField(blank=True,max_length="3", choices=TYPE_CHOICES)
所以在管理员表单中:
class MainContent(forms.ModelForm):
size = forms.MultipleChoiceField(choices=TYPE_CHOICES, widget=forms.CheckboxSelectMultiple())
class Meta:
model = Post
fields = '__all__'
但是当我保存表单时,它给了我这个错误:
选择一个有效的选项。 ['s', 'm', 'b'] 不是可用的之一 选择。
那么,问题出在哪里?
更新
抱歉,这个问题没有得到足够的信息,让我解释一下。
我想要一个复选框输入的原因是因为我希望它能够在单个字段(一列)中存储多个值。也许数据可以序列化(或逗号分隔),
由于 TYPE_CHOICES 是静态的,以后不会更改,所以我不打算使用 ManytoMany。
我还希望它能够通过语言轻松地显示在模板中。
希望这足够清楚。
【问题讨论】:
-
您的设置听起来很奇怪。你的模型有
size和CharField,但是你的Form你怎么用MultipleChoiceField? -
我认为您传递了一个列表,而不是“s”、“m”或“b”。你不能保存所有。只有一个。
-
@ShangWang 是对的,这就是问题所在。
-
您想在一个
Post上设置多个尺寸还是只选择一个size?
标签: django django-models django-forms django-admin