小能豆

更新 Django 对象

python

我有一个对象:-

a = Model.objects.get(id=1)

和 object 的数据属性字典a

update_data = {
colA: 1,
colB: 2,
colC: 3,
}

现在,我想更新 object a。我该怎么做?

注意:-.update()适用于查询集,而不适用于对象。另外,我不能这样做a.colA=1,因为在那种情况下,我已经setattr在每个键上使用了。

有什么办法可以直接更新对象吗?


阅读 138

收藏
2023-06-19

共1个答案

小能豆

要更新对象的属性,您可以使用setattr()函数为对象的每个属性设置新值。您可以遍历update_data字典的键值对,然后使用setattr()为对象的对应属性设置新值。

以下是示例代码:

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()方法以将更改持久化到数据库中。

2023-06-19