我有点困在这里了。假设我有一个字段列表(在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)