dtc*_*dtc 9 django django-select-related
select_related如何使用具有多个外键的模型?它只是选择第一个吗?
class Model:fkey1,fkey2,fkey3 ......
文档没有说明这一点,至少没有说明方法的位置.
Mar*_*nte 12
如果您的模型有多个外键,您可以:
\n.select_related()
,这将 \xe2\x80\x9cfollow\xe2\x80\x9d所有 非空外键关系.select_related(\'foreign_key1\', \'foreign_key2\', ...)
,这将仅 \xe2\x80\x9cfollow\xe2\x80\x9d 作为参数提供的外键。请注意,“遵循 FK 关系”意味着在执行查询时(通过执行 SQL 连接)选择其他相关对象数据。这将使主查询变得更重,但可以用来避免N+1 查询问题。
\n根据select_related
文档,不建议使用第一种方法(不带参数),因为“它可能会使底层查询更复杂,并返回比实际需要更多的数据”。
如果您的模型具有与其他模型“嵌套”的外键(即Book <>-- Author <>-- Hometown
),您也可以select_related
按如下方式使用:
Book.select_related(\'author__hometown\')
,这将 \xe2\x80\x9c 跟随 \xe2\x80\x9d 作者的外键(在 Book 模型中)和家乡的外键(在 Author 模型中)。如果您的模型具有要从数据库检索的多对多或多对一关系,您应该查看prefetch_lated。
\n您可以select_related
在链中使用如下
Comment.objects.select_related('user').select_related('article').all()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9440 次 |
最近记录: |