django - 根据第三个模型

时间:2018-01-03 20:25:29

标签: python django model django-queryset

我有三个模型设置如下:

class A(models.Model):
    name = models.CharField(max_length=200)

class B(models.Model):
    name = models.CharField(max_length=200)
    a = models.ForeignKey(to=A, null=True, blank=True)

class C(models.Model):
    name = models.CharField(max_length=200)
    a = models.ForeignKey(to=A, null=True, blank=True)

B-to-A关系是一对一,C-to-A关系是多对一关系。我有一个模板,我想显示所有B.name的列表,对于每个B.name,有一个C.name列表,其中C.a = B.a.最简单的方法是什么?

我知道我可以获取B列表和C列表,并且每个B得到Ba并搜索匹配Ca的C列表,但是有一种更简洁的方法来获得一个结合了两者的查询集?

示例:

A 数据库看起来像是 | id |名称|
| ---- | ------- |
| 1 |一个|
| 2 |两个|
| 3 |三个|

B 数据库看起来像是 | id |名字| A |
| ---- | ------- | --- |
| 1 |一个| 1 |
| 2 |两个| 2 |
| 3 |三个| 3 |

C 数据库看起来像是 | id |名字| A |
| ---- | ------- | --- |
| 1 | oneC | 1 |
| 2 | twoC | 1 |
| 3 | threeC | 1 |
| 4 | fourC | 2 |
| 5 | fiveC | 2 |
| 6 | sixC | 2 |
| 7 | sevenC | 3 |
| 8 | eightC | 3 |
| 9 | nineC | 3 |

我想要的是一个以某种方式表示以下内容的对象 | B.name | C.name |
| -------- | ------- |
|一个| oneC |
|一个| twoC |
|一个| threeC |
| ...... |等.. |

0 个答案:

没有答案