我使用Django 1.9和Python 2.7。
我的应用有四种型号。每次"旅行"是由几个"步骤"由访客选择,与#34;地点相关,可能有几个相关的"图片"。
class Trip(models.Model):
title = models.CharField(max_length=140, blank=True)
class Step(models.Model):
theplace = models.ForeignKey(ThePlace)
trip = models.ForeignKey(Trip)
class ThePlace(models.Model):
name = models.CharField(max_length=200)
class Picture(models.Model):
file = models.ImageField(upload_to="pictures")
slug = models.SlugField(max_length=100, blank=True)
theplace = models.ForeignKey(ThePlace, null=True, blank=True)
我想检索所有"图片"与特定Trip相关的对象,使用现有的" selectedtrip"查询集:
selectedtrip = Trip.objects.filter(author=request.user)[0]
pictures = selectedtrip.step_set.all().theplace.picture_set.all()
Django显示以下错误: " AttributeError:' QuerySet'对象没有属性' theplace'" 知道为什么吗?
答案 0 :(得分:2)
因为all()
返回一个查询集,它是一个项集合; theplace
是单个步骤的属性,而不是集合的属性。
执行此类查询的方法是从要检索的类开始,并使用双下划线语法跟踪查询中的关系。所以:
Picture.objects.filter(theplace__step__trip=selectedtrip)