2011-02-13 37 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

相關問題