我在这里做错了什么?我需要将空值设置为doing_field。
def delete_todo_today(request):
if request.is_ajax() and request.POST and request.user.is_authenticated:
thingtodo = ThingToDo.objects.filter(author = request.user, thing = request.POST.get('item'))
thingtodo.doing_date = None
thingtodo.save()
data = {'message': "%s 's doing_date deleted" % request.POST.get('item')}
return HttpResponse(json.dumps(data), content_type='application/json')
else:
raise Http404
答案 0 :(得分:2)
您正在使用.filter()
获取thingtodo
的对象。这将返回一个QuerySet或简单地说一个对象列表。您无法直接在多个对象上设置属性。
如果您只想检索一个对象,请使用get()
代替.filter()
。当多于或少于一个对象匹配时,这将引发异常。
如果要更新多个对象,请使用QuerySet的update()
方法:
thingtodo.update(doing_date=None)
还可以使用您的模型允许Null
作为属性。
答案 1 :(得分:0)
默认情况下models.DateField.empty_strings_allowed
设置为False
,
https://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#DateField
尝试使用ThingToDo.doing_date
1>之类的options['blank'] = True
定义doing_date = models.DateField(**options)