0

这个 QuerySet(假设Model模型有 12 个字段):

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

这个模板:

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

执行获取不必要字段(每 12 个字段 + 关系)的 SQL 查询。我希望 Django 只获得 'bar' 字段。我怎样才能做到这一点?

顺便说一句,我知道values()方法,但是由于它返回 dict,所以我不能调用Model诸如get_absolute_url().

4

1 回答 1

1

您只想使用():

objects = Model.objects.select_related().only("bar").filter(...)

但是请记住,如果您限制过多的数据,然后以其他方式使用对象,您实际上可能会导致 ORM 执行额外的查询,因此请确保使用 django-debug-toolbar 之类的东西来确保您不是t 删除这些不必要的字段只会招致大量不必要的查询,这是更糟糕的情况。

仅供参考,如果您想从另一个方向考虑,您也可以使用 defer() 列出您不想加载的字段。

于 2012-07-08T13:07:50.540 回答