几个星期以来,我正在学习Python和Django。到目前为止,已经足够阅读其他用户的问题和答案。但现在我的第一个问题的时刻已经到来。
我会尽力描述我的问题。我的问题是我无法查询或获取我想要的数据。
我想获取由ForeignKey关联到Gallery的第一个对象的url到Gallery,它由ForeignKey关联到类Entry。
目前为止models.py:
class BlogEntry(models.Model):
...
title = models.CharField(max_length=100)
...
class Gallery(models.Model):
entry = models.ForeignKey('BlogEntry')
class Image(models.Model):
gallery = models.ForeignKey('Gallery')
picture = models.ImageField(upload_to='img')
观点:
def view(request):
return render_to_response('mainview.html', {
'entryquery': BlogEntry.objects.all(),
}
)
模板:
{% for item in entryquery %}
<h1>{{ item.title }}</h1>
<img src="{{ item.WHAT TO ENTER HERE? :) }}" />
{% endfor %}
很明显我想要什么? 有人可以帮助我,并在可能的时候写一个简短的解释吗?
问候 巴斯蒂安
答案 0 :(得分:14)
您access related members可以other attributes in a template,因此您可以执行以下操作:item.gallery_set.all.0.image_set.all.0.picture.img
。但是,在BlogEntry上定义查找并返回相应图片的方法可能更容易,这样您就可以item.first_image
或类似的东西
答案 1 :(得分:0)
class BlogEntry(models.Model):
...
title = models.CharField(max_length=100)
...
class Gallery(models.Model):
entry = models.ForeignKey('BlogEntry',related_name="galleries")
class Image(models.Model):
gallery = models.ForeignKey('Gallery',related_name='images')
picture = models.ImageField(upload_to='img')
您必须在图库模型和模板视图中的外键中添加 related_name :
{% for g in blogentry.galleries.all %}
{{g.name}}
{%for i in g.images.all %}
<img src="{{i.picture.url}}">{{i.picture}}</img>
{% endfor %}
{% endfor %}