14

几周以来,我一直在学习 Python 和 Django。到目前为止,阅读其他用户的问题和答案已经足够了。但是现在我的第一个问题的时刻已经到来。

我会尽力描述我的问题。我的问题是我无法查询或获取我想要的数据。

我想获取由 ForeignKey 关联到 Gallery 的类 Image 的第一个对象的 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 %}

很清楚我想要什么?有人可以帮助我,并在可能的情况下写一个简短的解释吗?

问候巴斯蒂安

4

2 回答 2

21

您可以像访问模板中的其他属性一样访问相关成员,因此您可以执行以下操作:. 但是,在 BlogEntry 上定义一个查找并返回适当图片的方法可能更容易,这样您就可以执行或类似的操作item.gallery_set.all.0.image_set.all.0.picture.imgitem.first_image

于 2012-06-15T19:25:35.093 回答
3
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 %}
于 2016-05-06T12:34:04.737 回答