如何在django模型中将空值设置为DateField?

时间:2016-08-26 02:27:37

标签: python django

我在这里做错了什么?我需要将空值设置为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

2 个答案:

答案 0 :(得分:2)

您正在使用.filter()获取thingtodo的对象。这将返回一个QuerySet或简单地说一个对象列表。您无法直接在多个对象上设置属性。

如果您只想检索一个对象,请使用get()代替.filter()。当多于或少于一个对象匹配时,这将引发异常。

如果要更新多个对象,请使用QuerySet的update()方法:

thingtodo.update(doing_date=None)

还可以使用您的模型允许Null作为属性。

答案 1 :(得分:0)

默认情况下models.DateField.empty_strings_allowed设置为Falsehttps://docs.djangoproject.com/en/1.10/_modules/django/db/models/fields/#DateField

尝试使用ThingToDo.doing_date 之类的options['blank'] = True定义doing_date = models.DateField(**options)