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

Python 检索一组间接相关的模型对象,python,sql,django,django-models,django-queryset,Python,Sql,Django,Django Models,Django Queryset,我有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)

我有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
对象。我想检索与
传输线
停止
对象相关的所有唯一
退出类型
对象(那是满嘴的)

我想做的一些半伪代码:

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
调用中完成这项工作。有什么建议吗?

我想试试这样的方法:

ExitType.objects.filter(exits__stop__line=line).distinct()

是我还是模型代码不像通常那样语法突出显示?