【问题标题】:Django update the entryDjango 更新条目
【发布时间】:2012-05-15 14:47:15
【问题描述】:

为什么我使用filter获取条目时无法保存? 如果我使用get 获取它,它就可以工作。

我需要使用filter,因为我正在使用序列化程序返回一个 JSON 对象。而且 Django 的序列化器不喜欢它不是 QuerySet。

message = UserMessage.objects.filter(id=request.GET['msg_id'])
message[0].read = True
message[0].save()

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    除非message 被评估并因此被缓存,否则message[0] 总是命中数据库,例如

    >>> qs = User.objects.all()
    >>> qs[0] is qs[0]
    False
    >>> bool(qs) # evaluate, len(qs) or iterating on qs also do
    >>> qs[0] is qs[0]
    True
    

    你可以把它赋值给变量

    message = UserMessage.objects.filter(id=request.GET['msg_id'])[0]
    message.read = True
    message.save()
    

    或者直接使用update,就像jpic建议的那样:

    UserMessage.objects.filter(id=request.GET['msg_id']).update(read=True)
    

    【讨论】:

      【解决方案2】:

      你可以使用queryset update method:

      UserMessage.objects.filter(id=request.GET['msg_id']).update(read=True)
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2016-02-20
        • 2021-12-30
        • 1970-01-01
        • 2013-08-02
        • 2017-07-14
        • 1970-01-01
        相关资源
        最近更新 更多