2012-07-08 75 views
0

此查詢集不必要的字段(比方說Model模型有12場):Django的得到執行查詢集

objects = Model.objects.filter(...) 

而這個模板:

{% for object in object %} 
<a href='{{ object.get_absolut_url }}'>Foo: {{ object.bar }}</a> 
{% endfor %} 

執行SQL查詢它得到不必要的字段(每12場+關係)。我希望Django只能獲得'bar'字段。我怎樣才能做到這一點?

順便說一下,我知道values()方法,但因爲它返回字典,我不能打電話Model方法,如get_absolute_url()

+1

如果你不想要相關的對象,你爲什麼使用'select_related'? – 2012-07-08 16:05:46

+0

@Daniel Roseman,因爲我忘了將它刪除。謝謝。 – 2012-07-08 16:35:37

回答

1

您希望只使用():

對象= Model.objects.select_related()只( 「巴」)過濾器(...)

但是請記住,如果你限制。太多的數據,然後以其他方式使用對象,實際上可能導致ORM執行額外的查詢,因此請確保使用諸如django-debug-toolbar之類的東西,以確保您不會將這些不必要的字段僅刪除招致許多不必要的查詢,這是一種更糟糕的情況。

僅供參考如果您想在其他方向考慮它,您還可以使用defer()列出您不想加載的字段。

+0

謝謝!這就是我需要的。 :) – 2012-07-08 13:11:52