Django通过第三个表组合两个表



如果我有这3个模型

from django.db import models

class ModelA(models.Model):
    name = models.CharField(max_length=50)

class ModelB(models.Model):
    tag = models.CharField(max_length=50)

class ModelC(models.Model):
    a = models.ForeignKey(ModelA)
    b = models.ForeignKey(ModelB)

得到所有的ModelA和它们相关的ModelB.property的最好方法是什么?我想不出一个没有原始查询的好方法。

理想情况下我可以把它转换成:

[
    {
        "name": "foo",
        "tags": ["tag1", "tag2"]
    }
    ....
]

在ForeignKeys上使用related_name

from django.db import models

class ModelA(models.Model):
    name = models.CharField(max_length=50)

class ModelB(models.Model):
    property = models.CharField(max_length=50)

class ModelC(models.Model):
    a = models.ForeignKey(ModelA, related_name="theas")
    b = models.ForeignKey(ModelB, related_name="thebs")


获取与ModelA实例相关的所有ModelB实例

a_inst = ModelA.objects.get(foo=bar)
ModelB.objects.filter(thebs__a=a_inst)

最新更新