Django 复杂查询数据库

Django 复杂查询数据库,django,django-models,Django,Django Models,请参见下面的场景: class Case(models.Model): name = models.CharField(max_length=200) documentation = models.CharField(max_length=2048, blank=True) class Suite(models.Model): name = models.CharField(max_length=200) documentation = models.Ch

请参见下面的场景:

class Case(models.Model):

    name = models.CharField(max_length=200)
    documentation = models.CharField(max_length=2048, blank=True)


class Suite(models.Model):

    name = models.CharField(max_length=200)
    documentation = models.CharField(max_length=2048, blank=True)
    cases = models.ManyToManyField(Case, through='SuiteThroughModel')



class Project(models.Model):

    name = models.CharField(max_length=200)
    documentation = models.CharField(max_length=2048, blank=True)
    suites = models.ManyToManyField(Suite, through='ProjectSuiteThroughModel')


class ProjectSuiteThroughModel(OrderedModel):

    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    suite = models.ForeignKey(Suite, on_delete=models.CASCADE)


class SuiteThroughModel(OrderedModel):

    case = models.ForeignKey(Case, on_delete=models.CASCADE)
    suite = models.ForeignKey(Suite, on_delete=models.CASCADE)
我试图做的是从一个特定的项目中检索所有套件。 我就是这样做的:

project = Project.objects.get(name='xyz')
suites = project.suites.all() # outputs nothing
在Django文档中,我了解到我可以从查询的另一端获取数据:

suites = Suite.objects.filter(project__name='xyz') # outputs nothing
suites = Suite.objects.filter(projectsuitethroughmodel__project__name='xyz') # outputs nothing

数据在那里,但我如何才能访问它?

正如@WillemVanOnsem和@luxcem所指出的那样。我需要显式链接这些表。

您确定数据在那里吗?因此有一个
SuiteThroughModel
项目
(名称为
'xyz'
)链接到一个或多个
套件
?我不相信这里的数据(正确)链接。是的,数据在那里,因为当我运行
Suite.objects.all()
Case.objects.all()
时,它会出现。但是你确实通过
suites=models.ManyToManyField将
Suite
s和
Case
s链接到了
Project
(套件,通过class='ProjectSuiteThroughModel')
我应该能够访问
Suite
s和
Case
s。马克:是的,但随后您检索相关的
Suite
s和
Case
s,因此属于(此处)
项目的
Suite
s。