我想要做的很简单:
f=Foobar.objects.get(id=1)
foo='somefield'
bar='somevalue'
f.foo=bar
f.save()
这不起作用,因为它试图更新f对象的'foo'字段,这当然不存在。我怎么能做到这一点?
答案 0 :(得分:17)
您可以使用setattr
:
f = Foobar.objects.get(id=1)
foo = 'somefield'
bar = 'somevalue'
setattr(f, foo, bar) # f.foo=bar
f.save()
[
setattr
]是getattr()
的对应物。参数是一个对象,一个字符串和一个任意值。该字符串可以命名现有属性或新属性。如果对象允许,该函数会将值分配给属性。