2011-02-13 42 views
0

我总是遇到问题,试图找出变量的名称可用于模板中。我想知道在shell中是否有东西可以打印出所有可用的对象。Django ORM和模板,如何查看给定QuerySet的所有可用变量?

比方说,比如你有两种型号:

class Foo1(models.Model) 
    id = models.Integer(primary_key=True) 
    foo2 = models.ForeignKey(Foo2) 

class Foo2(models.Model) 
    id = models.Integer(primary_key=True) 
    foo3 = models.Integer() 

在我做p = Foo1.objects.all()所以,现在的壳p是所有的都包含在这两个Foo1Foo2值的一个QuerySet(因为关系)。

在我的模板

现在,为了把所有这些数据出来我通常会做这样的事情:

{% for i in p %} 
<p>{{ i.id }}</p> 
<p>{{ i.foo2.id }}</p> 
<p>{{ i.foo2.foo3 }}</p> 
{% endfor %} 

现在我只是猜测,变量语法使用的是i.idi.foo2.idi.foo2.foo3 ,但对于更复杂的QuerySet,这并不总是直截了当的。有没有办法输出QuerySet的所有可用变量及其名称?

回答

0

你应该使用:

Foo.objects.values_list() 
视图

,并通过对象的列表,而不是为queryset

还检查了:

Foo.objects.values() 
+0

`Foo.objects.values()`看起来很有帮助。谢谢! – Besto 2011-02-13 15:35:07

0

有没有必要去猜测。你应该能够从模型本身的代码中找到。

如果由于某些奇怪的原因您无法访问代码 - 我无法想象为什么 - 您始终可以使用交互式shell - 在那里导入模型,执行查询,然后执行dir(my_obj)以查找列表中的所有属性my_obj

+0

酷! dir()也有帮助。 – Besto 2011-02-13 15:36:59