Django Queryset only()和defer()

a.m*_*.m. 15 django django-models

在现实世界中,多久的人使用的QuerySet方法,如defer()only()?我想我真的听到了很多关于他们的事情,直到最近才发现这些方法.

请参阅此处的文档. https://docs.djangoproject.com/en/dev/ref/models/querysets/

And*_*ter 22

在优化应用程序性能时,这些方法通常很有用.

一般来说,如果您没有性能问题,则无需进行优化.如果您不需要优化,则不需要这些功能.这是一个具有许多高级QuerySet功能的情况,例如select_relatedprefetch_related.

至于"它们在现实世界中的使用频率",这实际上并不是一个可回答的问题.它们在需要时使用.如果您不需要它们,请不要使用它们.


Man*_*hit 8

defer()并且only()彼此有点对立。都收到的清单field_namesdefer()不会查询作为参数传递给它的列列表。与之相反,only()将仅查询作为参数传递给它的列列表。

两者都用在一个场景中

  • 您想要通过避免不必要的列提取进行优化

  • 您正在python代码中实现视图。例如,管理员必须显示X号。列,必须向用户显示Y号。列,访客必须显示z个列数。