2014-10-20 85 views
0

我有一個查詢集。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' object has no attribute 'update'

+1

使用'保存(update_fields = [])'如果你想只有特定字段寫入數據庫。 – Ski 2014-10-20 11:10:20

回答

2

update()是在QuerySet類中的方法,但不是在Model類,你Message模型與繼承。

預Django的1.5,你可以做Message.objects.filter(id=1).update(first_name='ABC')單個行更新,或者Message.objects.filter(...).update(first_name='ABC')如果你需要批量更新

你也可以調用它的模型,例如的ManagerMessage.objects.update(first_name='ABC')更新所有行

由於Django的1.5,你還可以指定哪些字段將被保存在一個對象的更新:

message_user.first_name = 'ABC' 
message_user.save(update_fields=["first_name"])