0

我想检索 PUT 数据列表,遍历该列表并根据列表中的属性更新对象。我的代码如下:

         property_id = data['id']
            if property_id:
                property_selected = Property.objects.get(id=property_id)
                if property_selected:
                    for d in data:
                        property_selected.d = data[d]
                    property_selected.save()

但是,这不起作用,因为当属性称为 name 时,它​​将值保存为 property_selected.d 而不是 property_selected.name。有谁知道我应该如何解决这个问题?

4

3 回答 3

1

您可以执行以下操作(使用iteritems()setattr()):

for key, value in data.iteritems():
    setattr(property_selected, key, value)

但是您可能应该限制允许编辑的字段:

for key, value in data.items():
    if key in ['foo_field', 'bar_field']:
        setattr(property_selected, key, value)
于 2013-04-12T06:22:44.663 回答
0

要按名称设置属性,您可以使用 django 模型实例的 setattr 方法

setattr(property_selected, d, data[d])

资料来源:如何按名称设置 django 模型字段?

于 2013-04-12T06:21:45.933 回答
0

使用内置函数setattr

for d in data:
    setattr(property_selected, d, data[d])

有许多使用 setattr的答案很有启发性。

于 2013-04-12T06:32:45.243 回答