我有一个分组的类别字段。问题是我已经创建了一个搜索表单,但是当我尝试在模板中向用户提供表单时,它就出错了。
models.py
MEDIA_CHOICES = (
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
)
category = models.CharField(max_length=20, choices=MEDIA_CHOICES, verbose_name=_(u'Category'))
forms.py(搜索)
class SearchingForm(forms.Form):
"Search Box"
search = forms.CharField(max_length=100, required=False, label=(_(u'Search')))
music_kind = forms.MultipleChoiceField(choices=MEDIA_CHOICES, required=False,
label=(_(u'Kind')),
widget=forms.CheckboxSelectMultiple(),
)
template.html
{{ form.search }}
{{ form.place_kind }}
我向用户显示这样的表单,问题是当我使用浏览器渲染时我有类似的东西(在每行中,它有一个复选框):
(('vinyl', 'Vinyl'), ('cd', 'CD'))
(('vhs', 'VHS Tape'), ('dvd', 'DVD'))
Unknown
我删除了'widget = forms.CheckboxSelectMultiple()'属性,但是我没有复选框。那么,我如何使用复选框字段呢?
答案 0 :(得分:1)
我认为您的数据类型不匹配。您想要在单个CharField中存储多个值。当然,你可以在那里保存键值对的字典,但是你必须将它解析回选择,这是一个巨大的痛苦。
我会将您的MEDIA_CHOICES移动到数据库表,然后在SearchingForm中,您可以执行CheckboxSelectMultiple,表单将按预期运行。
答案 1 :(得分:1)
我不确定,但我想知道选择组是否只适用于选择框(不是复选框)。