【发布时间】:2013-06-07 19:52:18
【问题描述】:
我有一个models.py:
class MyModel(models.Model):
...
fries_with_that = models.BooleanField()
forms.py:
class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = (
'fries_with_that',
)
这很好用,并为我提供了“未知”、“是”和“否”作为选择的下拉菜单。但我真的想要一个复选框。所以我补充说:
编辑
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['fries_with_that'].widget = forms.CheckboxInput()
现在我得到一个复选框,但是当被选中时,表单返回值None。这是为什么呢?
编辑
views.py:
form = MyModelForm(request.POST or None)
if form.is_valid():
# UPDATE PROJECT
updated = MyModel.objects.filter(
project_id=project_id
).update(**form.cleaned_data)
if updated == 0:
project = form.save()
【问题讨论】:
-
你如何在视图中检索它?
-
添加了视图代码。另外,我从文档中看到
BooleanField的默认值应该是一个复选框。为什么会出现下拉菜单? -
您使用的是
NullBooleanField吗?它们默认为带有未知、是和否选项的选择框。 -
您在哪里添加了这一行?
self.fields['fries_with_that'].widget = forms.CheckboxInput() -
在
__init__覆盖。抱歉,应该澄清一下。
标签: django django-forms