在现实世界中,人们多久使用defer()
和only()
等QuerySet方法?
我想我真的很了解他们,直到最近我才发现这些方法。
请参阅此处的文档。 https://docs.djangoproject.com/en/dev/ref/models/querysets/
答案 0 :(得分:19)
这些方法主要用于优化应用程序的性能。
一般来说,如果您没有遇到性能问题,则无需进行优化。如果您不需要优化,则不需要这些功能。这是一个包含许多高级QuerySet
功能的案例,例如select_related
或prefetch_related
。
至于“它们在现实世界中的使用频率”,这实际上并不是一个可回答的问题。它们在需要时使用。如果您不需要它们,请不要使用它们。
答案 1 :(得分:7)
defer()
和only()
彼此有些相反。两者都收到field_names
的列表。 defer()
将不会查询列,列表,作为参数传递给它。与此相反,only()
将仅查询列,将其作为参数传递给它。
两者都用于场景中,
您希望通过避免不必要的列提取进行优化
您正在python代码中实现视图。 Eg.Admin必须 显示X没有。 cols,用户必须显示Y否。观众,访客 必须显示z没有cols。