Django ORM在QuerySet对象上更新
我有一个查询集,像这样。
message = Message.objects.select_related('user').get(id=1)
message_user = message.user
当我在 message_user 上使用 .save() 函数时,它可以正常工作。
message_user.first_name = 'ABC'
message_user.save()
但是当我使用 .update() 函数时,它就不行了。
message_user.update(first_name='ABC')
'User' 对象没有 'update' 这个属性
1 个回答
2
update()
是 QuerySet
类中的一个方法,但在你的 Message
模型所继承的 Model
类中并没有这个方法。
在 Django 1.5 之前,你可以用 Message.objects.filter(id=1).update(first_name='ABC')
来更新单条记录,或者用 Message.objects.filter(...).update(first_name='ABC')
来进行批量更新。
你也可以在模型的 Manager
上调用这个方法,比如 Message.objects.update(first_name='ABC')
就可以更新所有记录。
自从 Django 1.5 以后,你还可以在单个对象更新时指定要保存哪些字段,方法是:
message_user.first_name = 'ABC'
message_user.save(update_fields=["first_name"])