想象一下,我有一个关系:
自动< - >门< - >窗口
我想找到所有打开车窗的车。我可以这样做:
Auto.filter(door__window__status__in=['open', 'almost open'])
但是如何通过单一查询找到哪些窗口导致特定车辆在查询中返回?
我需要这些信息,以显示这样的内容吗?
如果我在所有4个表之间总是有m2m关系,情况会有多大差异吗?
答案 0 :(得分:-1)
我考虑过这个模型:
from django.db import models
class A(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
class B(models.Model):
name = models.CharField(max_length=50)
a = models.ManyToManyField(A)
def __str__(self):
return self.name
class C(models.Model):
name = models.CharField(max_length=50)
b = models.ManyToManyField(B)
def __str__(self):
return self.name
class D(models.Model):
name = models.CharField(max_length=50)
C = models.ManyToManyField(C)
def __str__(self):
return self.name
现在运行以下查询:
results = A.objects.filter(b__c__d__in=['d1','d2']).all().values('name','b__name','b__c__name','b__c__d__name')
会给你渴望的结果