【问题标题】:django - 3-model set all, with joining?django - 3 模型设置所有,加入?
【发布时间】:2010-01-20 18:26:42
【问题描述】:

我有这些模型:

A 类(型号): 通过

B级(型号): the_a = ForeignKey(A)

C 类(型号): the_b = ForeignKey(B)

在代码的某处,我有一个 A 实例。我知道如何让所有 B 与 A 相关联; A.b_set.all() - 但是有没有办法让所有的 C 与我的 A 相关联的所有 B 相关联,而不需要做很多查询?

【问题讨论】:

    标签: django model


    【解决方案1】:

    您可以执行此查询以获取所有通过 B 关联到 A 的 C:

    C.objects.filter(the_b__the_a=instance_of_a)
    

    instance_of_a 是 A 类的某个实例。

    欲了解更多信息,请参阅http://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships

    【讨论】:

      【解决方案2】:

      这并不能直接回答您的问题,但可以通过单个查询在直接 SQL 中使用,因此在 Django 中也可以,但这取决于它们对 SQL 的包装器的编写方式。

      例子:

      SELECT C.* FROM B,C WHERE C.the_b = B.id AND B.the_a = ?
      

      其中?是你感兴趣的A的ID。

      【讨论】:

        【解决方案3】:

        好的,我应该有 RTM:

        my_a = A 的一些实例

        cs_for_my_a = C.objects.filter(the_b__the_a=my_a)

        【讨论】:

          猜你喜欢
          • 2020-11-10
          • 2021-08-18
          • 1970-01-01
          • 2011-09-19
          • 2019-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多