检索一组间接相关的模型对象

2024-09-24 06:31:56 发布

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

我有4个模型:

class TransitLine(models.Model):
    name = models.CharField(max_length=32)

class Stop(models.Model):
    line = models.ForeignKey(TransitLine, related_name='stops')

class ExitType(models.Model):
    name = models.CharField(max_length=32)
    people_limit = models.PositiveSmallIntegerField()

class Exits(models.Model):
    TOKEN_BOOTH     = 0
    GATE            = 1
    REVOLVING_DOOR  = 2

    EXIT_TYPES = (
        (TOKEN_BOOTH, 'Token booth'),
        (GATE, 'Gate'),
        (REVOLVING_DOOR, 'Revolving door'),
    )
    name = models.CharField(max_length=32)
    stop = models.ForeignKey(Stop, related_name='exits')
    type = models.ForeignKey(ExitType, related_name='exits')

我有一个TransitLine对象。我想检索与TransitLineStop对象相关的所有唯一的ExitType对象(满嘴都是)。你知道吗

我想做的一些半伪代码:

tl = TransitLine.objects.get(id=1)
exit_types = []
for s in tl.stops:
    exit_types.append([e.type for e in s.exits])
unique_exit_types = list(set(exit_types))

显然,我们更愿意在一个QuerySet调用中完成这项工作。有什么建议吗?你知道吗


Tags: namemodelmodelsexitlengthmaxclasstypes