迭代数据列表并根据列表编辑对象的属性

时间:2013-04-12 06:11:04

标签: python django django-models tastypie

我想检索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。有谁知道我应该如何解决这个问题?

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

setattr(property_selected, d, data[d])

来源:How to set django model field by name?

答案 2 :(得分:0)

使用内置函数setattr

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

使用setattr的a number of answers有点照亮。