2013-10-15 35 views
0

我想动态生成在查​​询集上迭代的字段名称。Django python在遍历查询集的同时动态生成字段名称

obj = tblFoo.objects.all() 

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

阵列具有用于tblFoo

使用obj.item给出键不存在错误,以及使用一个字符串象日提交的名称,

“物镜”。 +项目给我所需的字符串,但它没有得到预期的值。

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

+0

你为什么要这么做?有没有你想解决的问题?如果您只需要从模型中返回某些字段,请使用['only'](https://docs.djangoproject.com/en/1.5/ref/models/querysets/#only) –

+0

为'obj'使用不同的名称:一个用于查询集,一个用于单个项目! – Don

+0

@Burhan Khalid我正在使用'only',但'only'(来自数组)中提供的字段是我需要在迭代器中访问的字段,并且字段数总是不一样。 – Nikhilesh

回答

3

使用getattr(obj,'attribute_name_in_string')

GETATTR(对象,名称[,默认])

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

+0

非常及时的回复,非常感谢你们。 – Nikhilesh

3

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

从文档:

例如,GETATTR(X, 'foobar的')相当于x.foobar

+0

非常感谢你的回复。 – Nikhilesh