【发布时间】:2019-06-19 23:49:39
【问题描述】:
我明白了:
# models
class Building(models.Model):
...
class Flat(models.Model):
building = models.ForeignKey(Building)
class Profile(models.Model):
flats = models.ManyToManyField(Flat)
# logic
building = Building.objects.create()
flat_1 = Flat.objects.create(building=building)
flat_2 = Flat.objects.create(building=building)
profile = Profile.objects.create()
profile.flats.add(flat_1)
profile.flats.add(flat_2)
profiles = Profile.objects.filter(flats__building=building)
我获得了profiles 2 个相同的个人资料。我如何用不同的flat 注释它们中的每一个:profiles.first().flat == flat_1 和profiles.last().flat == flat_2?
也许是Subquery(),但如何?
UPD 我在某些 DRF 列表视图中需要这个。 JSON 格式的输出必须类似于:
[
{
"profile_id": 1,
"flat_id": 2
},
{
"profile_id": 1,
"flat_id": 3
}
]
【问题讨论】:
-
不完全确定您要达到的目标,但是如果您将
through-model (docs.djangoproject.com/en/2.1/ref/models/fields/…) 添加到您的ManyToManyField,这样的事情会变得更容易,然后您可以对此进行查询关系也是... -
@BernhardVallant 是的,这是一个选项。谢谢!
标签: django django-models django-queryset django-annotate