我有一个对象:-
a = Model.objects.get(id=1)
和 object 的数据属性字典a。
a
update_data = { colA: 1, colB: 2, colC: 3, }
现在,我想更新 object a。我该怎么做?
注意:-.update()适用于查询集,而不适用于对象。另外,我不能这样做a.colA=1,因为在那种情况下,我已经setattr在每个键上使用了。
.update()
a.colA=1
setattr
有什么办法可以直接更新对象吗?
要更新对象的属性,您可以使用setattr()函数为对象的每个属性设置新值。您可以遍历update_data字典的键值对,然后使用setattr()为对象的对应属性设置新值。
setattr()
update_data
以下是示例代码:
a = Model.objects.get(id=1) update_data = { 'colA': 1, 'colB': 2, 'colC': 3, } for key, value in update_data.items(): setattr(a, key, value) a.save()
在上述代码中,我们遍历update_data字典的键值对,将每个键作为属性名称,使用setattr()将对应的值设置给对象a的属性。最后,通过调用save()方法保存对象的更改。
save()
请确保在更新对象的属性后调用save()方法以将更改持久化到数据库中。