我一直在研究具有继承子类的第二级别的2级反向外键。我正在使用django-model-utils进行继承。我一直没有使用调整的预取命令,直到我找到了答案遍历查询集在这个岗位 Prefetch object with multiple levels of reverse lookups使用select_subclasses对反向外键进行2级预取
我的问题是,
1)我没有看到与反向外键的表内加入时,我打印查询。那是因为prefetch将它们拉入单独的查询中吗?
print product_types.query
2)遍历中的.all()命中数据库?或者django从单个预取中提取数据?
pt.bevtank_set.all()
3)一般来说,有关如何找出我真正查询的内容的任何提示?我不想做符合我需求的事情,但是做一些符合我需求的正确方法。
非常感谢您的时间!
感谢您的工具栏提示!我有一个后续问题。 因此,我实际上预取了Prefetch类,因为我不得不在第二级调用select_subclasses()。将这些数据交给模板进行显示的首选方式是什么?通常,我使用values()来提取必需的字段,并将这些数据交给模板进行渲染。在这种情况下,我无法调用values(),因为没有内部连接。我是否需要通过遍历生成单独的字典,然后将其传递给模板? – coolarm
我不确定我是否理解您的数据模型,因此我不知道将其传递给模板的最佳方式。如果在视图中创建单独的字典适合你,那听起来不错。 – Alasdair