Python Django:如何在数据库中将复选框的POST.get保存为false(0)?
我试图在数据库中将复选框的值保存为true或false。我必须用一个模型来做这个。如果选中此框,则保存“1”的值。但是,如果未选中该框,我会收到错误消息:Python Django:如何在数据库中将复选框的POST.get保存为false(0)?,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我试图在数据库中将复选框的值保存为true或false。我必须用一个模型来做这个。如果选中此框,则保存“1”的值。但是,如果未选中该框,我会收到错误消息: Django Version: 1.9.4 Exception Type: IntegrityError Exception Value: (1048, "Column 'completed' cannot be null") 当前我的设置如下所示: 在models.py中,我有: class myClass(mode
Django Version: 1.9.4
Exception Type: IntegrityError
Exception Value: (1048, "Column 'completed' cannot be null")
当前我的设置如下所示:
在models.py中,我有:
class myClass(models.Model):
completed = models.BooleanField(default=False, blank=True)
def create_myClass(request):
completed = request.POST.get('completed')
toSave = models.myClass(completed=completed)
toSave.save()
在views.py中,我有:
class myClass(models.Model):
completed = models.BooleanField(default=False, blank=True)
def create_myClass(request):
completed = request.POST.get('completed')
toSave = models.myClass(completed=completed)
toSave.save()
在HTML中,我有:
<label class="col-md-5" for="completed"> Completed: </label>
<input id="completed" type="checkbox" name="completed">
及
但两者都不起作用(不确定我的语法是否正确?)
非常感谢您的任何想法或建议 您可以打印
request.POST的值,查看视图中的内容
如果未在checkbox HTML元素中指定值
属性,则如果选中该复选框,则在POST
中传递的默认值为on
在视图中,您可以检查completed
的值是否为on
:
# this will set completed to True, only if the value of
# `completed` passed in the POST is on
completed = request.POST.get('completed', '') == 'on'
如果未选中该复选框,则不会传递任何内容,在这种情况下,您将从上述语句中获得False
如果可以的话,我建议你使用一个新的方法,这样大部分事情都会自动地为你处理好
使用此代码段
要解决这个问题,您必须知道复选框是如何工作的:如果选中了复选框,则会将一个值传递给request.POST
——但如果不选中复选框,则根本不会传递任何值。那么如果声明
'completed' in request.POST
如果为true,则复选框已被选中(因为只有“已完成”才被发送并位于POST数组中),否则它不会被选中
我更喜欢这种方式,因为它不处理任何花哨的默认值,而是一个简单明了的条件
completed = 'completed' in request.POST
toSave = models.myClass( completed = completed )
toSave.save()
项目经理特别想要这样的模型,因为他想把它们用于其他事情(不是100%确定所有的理由)。completed=request.POST.get('completed','')='on'似乎有效!非常感谢!模型和形式在这个例子中是两个不同的东西。您已经有了一个模型,现在您需要将其与表单关联,以便它可以在UI中呈现该模型,然后处理您提交的数据。你可以在上面的链接中阅读更多关于这个如何工作的信息。@SuperCow:如果答案对你有帮助,请也跟着做。
completed = 'completed' in request.POST
toSave = models.myClass( completed = completed )
toSave.save()
completed = request.POST.get('completed')
completed = True if completed else False