按属性变量更新查询集



以下面的数据为例,其中prop是我尝试更新的查询集,results是信息的字典。此字典具有在此查询集中属于属性的键,并且还具有不是此查询集中属性的键。我只想更新这个查询集,如果它的属性匹配...

prop = Property.objects.get(pk=14)
results = {'price': '525000', 'code': '55285', 'estimate': '1500'}

我知道这不起作用,因为它需要一个名为"apicall"的属性,但这就是我希望实现的逻辑:

for apicall in results:
if hasattr(prop,apicall):
prop.apicall = results[apicall]
prop.save()

如何避免从字面上调用prop.apicall,而是prop.price查询集中是否存在它?

您可以使用setattr(…)内置函数 [python-doc],从而使用:

for apicall in results:
if hasattr(prop,apicall):
setattr(prop, apicall, results[apicall])
prop.save()

最好在所有更改保存prop,否则我们将执行大量额外的数据库查询。

最新更新