2012-07-08 88 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