引用对象datamember时使用变量

Kri*_*ris 2 python django

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

list = ['title', 'description', 'name']
Run Code Online (Sandbox Code Playgroud)

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

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

foo = Foo()
for i in list:
    foo.i = "value"
foo.save()
Run Code Online (Sandbox Code Playgroud)

问题是解释器正在寻找一个被调用的数据库'i',并且没有事先映射它的值(这可能是标题或描述).有没有办法解决?

谢谢!

ale*_*cxe 5

使用setattr()内置功能:

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

foo = Foo()
for field in fields:
    setattr(foo, field, "value")
foo.save()
Run Code Online (Sandbox Code Playgroud)

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


此外,您可能希望使用"字段名称:字段值"对的字典.在这种情况下,您可以解压缩并传递给模型对象构造函数:

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

foo = Foo(**fields)
foo.save()
Run Code Online (Sandbox Code Playgroud)