【问题标题】:Django Queryset only() and defer()Django Queryset only() 和 defer()
【发布时间】:2013-02-23 11:06:37
【问题描述】:

在现实世界中,人们多久使用一次像defer()only() 这样的QuerySet 方法? 我想我确实听说过很多关于它们的信息,而且直到最近我才发现这些方法。

在此处查看文档。 https://docs.djangoproject.com/en/dev/ref/models/querysets/

【问题讨论】:

  • 这是我第一次听到这个消息,感谢您提供的信息。
  • 在编写数据迁移时通常很有用(使用migrations.RunPython),这些非常方便,并且可以在为生产中的大型数据库表运行迁移时避免大量来回操作。跨度>
  • 来这里是因为他们在采访中问过;)

标签: django django-models


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2013-07-23
      • 2017-10-08
      • 1970-01-01
      相关资源
      最近更新 更多