我有一个ModelForm,它有布尔字段和CheckboxInput。布尔字段在MYSQL数据库中默认提供0(假)和1(真)的值。
表单是模态的,使用JSON从模型输出内容,当JSON文件添加内容时,它输入True或False。
当我尝试将复选框输入的值从False更改为True并提交时,出现此问题。当我尝试此操作时,收到以下消息:
奇怪的是,这正好相反,允许我提交从True到False的更改。
下面是代码(我只包含了问题的字段。)字段是First_Time_Booking
模特。
first_time_booking = models.BooleanField()
表单小部件。
'first_time_booking': CheckboxInput(attrs={'class': 'form-check-input', 'id': 'bfbw_edit_first_time_booking', 'name': 'bfbw_edit_first_time_booking'}),
视图
def update_bfbw(request):
if request.method == 'POST':
bfbw_booking_id = request.POST.get('bfbw_booking_ref')
bfbw_data = BFBWBookings.objects.get(id=bfbw_booking_id)
bfbw_data.school_name = request.POST['school_name']
bfbw_data.first_time_booking = request.POST.get('first_time_booking', False)
bfbw_data.save()
else:
print(form.errors)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
我试过写一个if函数来改变值,这个函数可以把值改变为on,但是在关闭它的时候不行。
if request.POST['first_time_booking'] == 'on':
bfbw_data.first_time_booking = True
else:
bfbw_data.first_time_booking = False
任何帮助这将是伟大的。提前感谢任何答复。
1条答案
按热度按时间ax6ht2ek1#
该值为
"on"
(如果用户已选中复选框)或does not exists(如果用户未选中复选框)。因此,您可以使用:
注意:最好使用
Form
[Django-doc],而不是手动验证和清理数据。Form
不仅可以简化以HTML格式呈现表单的过程,而且可以更方便地验证输入,并将数据清理为更方便的类型。