引用对象datamember时使用变量

时间:2014-07-14 13:35:27

标签: python django

我有点被困在这里。所以假设我有一个字段列表(在DB表的上下文中):

list = ['title', 'description', 'name']

这些字段存在于数据库表Foo中。

所以这是我的问题......

foo = Foo()
for i in list:
    foo.i = "value"
foo.save()

问题是解释器正在寻找一个名为'i'的数据集,并且不会事先映射其值(例如,标题或描述)。反正有吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

使用setattr()内置功能:

fields = ['title', 'description', 'name']

foo = Foo()
for field in fields:
    setattr(foo, field, "value")
foo.save()

此外,list不是一个好的变量名 - 它是内置的阴影,可能会引起问题/惊喜。


另外,你可能想要一个"字段名称的字典:字段值"相反。在这种情况下,您可以unpack it并传递给模型对象构造函数:

fields = {'title': 'My Title', 
          'description': 'My Description', 
          'name': 'My Name'}

foo = Foo(**fields)
foo.save()

答案 1 :(得分:1)

您正在尝试设置i,而不是设置该对象的名称变量。

请尝试setattr

等对象的setattr(foo,i,value)