Python 检索一组间接相关的模型对象
我有4种型号: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)
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()
是我还是模型代码不像通常那样语法突出显示?