繁体   English   中英

Django 对多个表执行连接

[英]Django perform a join on multiple tables

我有以下表格,

class A: 
    field_1 = models.CharField()
    field_2 = models.IntegerField()

class B: 
    a = models.ForeignKey(A, related_name='table_b')
    some_other_field = models.CharField()

class C: 
    b = models.ForeignKey(B, related_name="table_c")
    other_field = models.CharField()

假设为表A上的对象提供了ids ,我需要获取与表A到表B相关的所有C对象。 我有以下查询,它为我提供了我需要的东西,但我想知道是否有更好的方法来做到这一点,我正在阅读prefetch_relatedselect_related但到目前为止我还不清楚如何使用它们

c_list = C.objects.filter(b__in=B.objects.filter(a__pk__in=table_a_ids))

另外,我想按other_field对它们进行分组

任何帮助深表感谢。

不需要.select_related(…).prefetch_related(…) 您可以使用以下方式过滤:

c_list = C.objects.filter(b__a_id__in=table_a_ids)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM