Django ORM在QuerySet对象上更新

0 投票
1 回答
540 浏览
提问于 2025-04-28 12:48

我有一个查询集,像这样。

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"])

撰写回答