在引用对象数据成员时使用变量



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

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

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

所以这是我的问题…

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

问题是解释器正在寻找一个名为'i'的数据成员,并且没有事先映射它的值(就像,title或description)。还有别的办法吗?

谢谢!

使用setattr()内置功能:

fields = ['title', 'description', 'name']
foo = Foo()
for field in fields:
    setattr(foo, field, "value")
foo.save()

此外,list不是一个好的变量名-它是内置的阴影,可能会导致问题/意外。


另外,您可能希望有一个"字段名:字段值"对的字典。在这种情况下,您可以将其解包并传递给模型对象构造函数:

fields = {'title': 'My Title', 
          'description': 'My Description', 
          'name': 'My Name'}
foo = Foo(**fields)
foo.save()

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

请尝试setattr的对象,如setattr(foo,i,value)

相关内容

最新更新