25

在现实世界中,人们使用 QuerySet 方法的频率是defer()多少only()?我想我真的听说过很多关于它们的事情,直到最近我才遇到这些方法。

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

4

2 回答 2

32

这些方法主要用于优化应用程序的性能。

一般来说,如果你没有性能问题,你不需要优化。而如果你不需要优化,你就不需要这些功能。这是一个具有许多高级QuerySet功能的案例,例如select_relatedprefetch_related

至于“它们在现实世界中的使用频率”,这并不是一个真正可以回答的问题。它们在需要时使用。如果您不需要它们,请不要使用它们。

于 2013-03-08T01:13:08.963 回答
20

defer()并且only()彼此有些相反。两者都收到field_names. defer()不会查询,列列表,作为参数传递给它。与它相反,only()将只查询列的列表,作为参数传递给它。

两者都在一个场景中使用,其中

  • 您希望通过避免不必要的列获取来进行优化

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

于 2016-11-02T07:34:16.777 回答