2013-03-08 28 views
5

在现实世界中,多久的人使用的QuerySet方法,如defer()only()? 我想我的手机真的听过很多关于他们的事情,直到最近我才遇到这些方法。Django的查询集只()和推迟()

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

+0

这是我第一次听到这个消息,并感谢信息。 – catherine 2013-03-08 01:08:05

+0

编写数据迁移通常很有用(使用'migrations.RunPython'),这些都非常方便,并且可以避免在生产中运行大数据库表迁移时大量来回。 – elias 2018-02-01 17:16:13

回答

10

这些方法使用的大多是优化应用程序的性能时。

一般来说,如果你没有遇到性能问题,你不需要优化。如果你不需要优化,你不需要这些功能。这是许多高级QuerySet功能的情况,例如select_relatedprefetch_related

至于“他们往往是如何在现实世界中使用的”,这是不是一个真正的回答的问题。他们在需要时使用。如果你不需要它们,请不要使用它们。

1

defer()only()偏于彼此相对的。两者都收到field_names的清单。 defer()不会查询作为参数传递给它的列的列表。与此相反,only()将查询仅列表作为参数传递给它的列。

无论是在一个场景,其中

  • 你想要么优化使用,避免不必要的列取

  • 你实现你的Python代码的意见。例如,Admin必须以 显示X号。用户必须显示Y号。 cols,访问者 必须显示z no no cols。