设置未知Django模型字段的值

时间:2018-08-20 03:02:09

标签: python django django-models

我正在实现一个将模型类作为参数的函数,并且应该从同一模型中获取字典,将模型字段设置为该字典中的同名键,然后将模型保存到数据库中。

这是函数的代码:

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非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

替换行

        field = getattr(model_to_populate_instance, key)
        field = value

使用

        setattr(model_to_populate_instance, key, value)

原因:getattr的返回值是属性的 value ,而不是对属性本身的引用(如果是引用,则进行设置是没有意义的field = value