如何通过几个表来查询关系,从关系的中间得到东西?

2024-06-25 23:51:55 发布

您现在位置:Python中文网/ 问答频道 /正文

想象一下,我有一个关系:

自动门

我想找到所有开着窗户的车。我可以这样做:

Auto.filter(door__window__status__in=['open', 'almost open'])

但是,我怎样才能用一个查询找到,哪个窗口导致特定的汽车在一个查询中被返回?你知道吗

我需要这些信息,来显示这样的东西?你知道吗

  • 红色福特(左前车窗打开)
  • 绿色野马(右前车窗打开)

如果我总是在所有4个表之间使用m2m关系,情况会有很大不同吗?你知道吗


Tags: in信息auto关系statusopenfilterwindow
1条回答
网友
1楼 · 发布于 2024-06-25 23:51:55

我考虑过这种模式:

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')

会给你想要的结果

相关问题 更多 >