如果我有这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)