我正在实现一个将模型类作为参数的函数,并且应该从同一模型中获取字典,将模型字段设置为该字典中的同名键,然后将模型保存到数据库中。
这是函数的代码:
def populate_model(self, model_to_populate):
model_to_populate_instance = model_to_populate()
if hasattr(model_to_populate_instance, 'populate_data'):
populate_data = getattr(model_to_populate, 'populate_data')
for key, value in populate_data.items():
field = getattr(model_to_populate_instance, key)
field = value
model_to_populate_instance.save()
出问题了,因为我没有从数据库中的字典中获取值,而是从对象GeneralApp.models.CustomCharField>
中获取值。我想我没有成功将模型实例字段的值设置为字典中的值。
O非常感谢您的帮助。
答案 0 :(得分:0)
替换行
field = getattr(model_to_populate_instance, key)
field = value
使用
setattr(model_to_populate_instance, key, value)
原因:getattr
的返回值是属性的 value ,而不是对属性本身的引用(如果是引用,则进行设置是没有意义的field = value
。