代码之家  ›  专栏  ›  技术社区  ›  Junhao

遍历数据列表并根据列表编辑对象的属性

  •  0
  • Junhao  · 技术社区  · 13 年前

    我想检索一个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_sected.name。有人知道我该怎么解决这个问题吗?

    3 回复  |  直到 13 年前
        1
  •  1
  •   Timmy O'Mahony    13 年前

    您可以使用 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)
    
        2
  •  0
  •   Community Mohan Dere    9 年前

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

    setattr(property_selected, d, data[d])

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

        3
  •  0
  •   Community Mohan Dere    9 年前

    使用内置函数 setattr .

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

    a number of answers 使用具有启发性的setattr进行阅读。