我有三个模型设置如下:
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 |
| ...... |等.. |