如何按名称设置django模型字段?

时间:2009-10-09 19:29:26

标签: django django-models

这似乎应该很简单,所以我必须遗漏一些东西。我只想按名称设置模型实例中字段的值。说我有:

class Foo(Model):
  bar = CharField()

f = Foo()

我想按名称设置bar的值,而不是通过访问该字段。如下所示:

f.fields['bar'] = 'BAR"

而不是

f.bar = 'BAR'

我已尝试过setattr但它不会在数据库中保留该值。我也尝试过_meta.fields,但在此过程中遇到了各种错误。

2 个答案:

答案 0 :(得分:61)

如果您通过setattr修改该值,则需要记住在修改后保存模型。我曾经被咬过去,我改变了价值但却忘了保存模型,并得到了相同的结果。

setattr(f, 'bar', 'BAR')
f.save()

答案 1 :(得分:16)

我们可能需要查看更多代码。

setattr(f, 'bar', 'BAR')

应该可以工作,因为这是Django在内部的工作方式。

确保您也在呼叫“保存”。