0

我想在查询集的迭代中动态生成字段名称。

obj = tblFoo.objects.all()

    for obj in queryset
        for item in array
            print obj.item

该数组具有 tblFoo 的文件名

使用 obj.item 会出现错误,密钥不存在,并使用类似的字符串,

“对象。” + item 给了我所需的字符串,但它没有得到预期的值。

谁能告诉我这是怎么做的?

4

2 回答 2

3

利用getattr(obj,'attribute_name_in_string')

getattr(对象,名称[,默认值])

返回对象的命名属性的值。名称必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,getattr(x, 'foobar') 等价于 x.foobar。如果命名属性不存在,则返回默认值(如果提供),否则引发 AttributeError。

于 2013-10-15T07:18:56.880 回答
3

您应该使用getattr(obj, item)来获得所需的值。是该getattr函数的python 文档。

从文档:

例如,getattr(x, 'foobar') 等价于 x.foobar

于 2013-10-15T07:18:57.097 回答