使用动态字段名称更新模型实例

时间:2010-05-30 05:27:59

标签: python django

我想要做的很简单:

f=Foobar.objects.get(id=1)
foo='somefield'
bar='somevalue'
f.foo=bar
f.save()

这不起作用,因为它试图更新f对象的'foo'字段,这当然不存在。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:17)

您可以使用setattr

f = Foobar.objects.get(id=1)
foo = 'somefield'
bar = 'somevalue'
setattr(f, foo, bar) # f.foo=bar
f.save()
  

[setattr]是getattr()的对应物。参数是一个对象,一个字符串和一个任意值。该字符串可以命名现有属性或新属性。如果对象允许,该函数会将值分配给属性。