use*_*014 2 django django-queryset
我有一个需要第二个相关模型的查询
Model1.objects.all().select_related("model2__model3")
但我不需要来自模型 2 的任何字段,只需要来自模型 3 的许多不同字段,例如obj.model2.model3.name和其他
如何在不一个接一个明确提及的情况下推迟 model2 中的所有字段?
编辑:模型 1 有外键到模型 2 有外键到模型 3
我相信您正在尝试使用.only()queryset 方法,下面的代码片段应该可以工作。
根据 Django 文档:
only() 方法或多或少与 defer() 相反。您使用检索模型时不应延迟的字段调用它。如果您有一个几乎所有字段都需要延迟的模型,则使用 only() 指定补充字段集可以使代码更简单。
Model1.objects.all().only('model2__model3__name').select_related("model2__model3")
Run Code Online (Sandbox Code Playgroud)
使用上面的代码片段,尝试访问任何字段model2将导致数据库访问,而访问model2.model3.name则不会。
这样,来自的所有字段model2都将被推迟。如果你想访问另一个字段,只需将它传递给.only()函数.only('model2__model3__name', 'model2__model3__another')。
| 归档时间: |
|
| 查看次数: |
242 次 |
| 最近记录: |