相关对象参考Django

时间:2015-11-21 16:56:47

标签: python django

给出以下代码:

Models.py

class Advertisement(models.Model):
    title = models.CharField(null=True, blank=True, max_length=30)
    created_by = models.ForeignKey(User)

class Gallery(models.Model):
    advertisement = models.ForeignKey(Advertisement, related_name='images')
    image = models.ImageField(upload_to=image_directory_path, help_text="Your ad image (Recommended size: 1024x768)")
    creation_date = models.DateTimeField(editable=False, default=timezone.now)

Views.py

def do_foo(request):
    search_result = Advertisement.objects.all().order_by('-creation_date')

    return render(request, 'content_search.html',
                  {
                      'search_result': search_result
                  })

page.html中

{% for ad in search_result %}
    {% for ad_image in ad.gallery_set %}
    <img src="{{ ad_image.image.url }}">
    {% endfor %}
{% endfor %}

如何访问广告和图库之间的向后关系?我试过了ad.gallery_set和ad.images_set,但我无法获得图片。

我尝试按照他们在此处Django Relation Objects Referencetopic中所说的内容进行操作。

1 个答案:

答案 0 :(得分:3)

您的代码有related_name="images"。所以ad.images就是。

编辑:正确粉碎注释,如果要循环使用它,则不能直接使用它,并且需要添加.all来获取查询集对象:

{% for ad_image in ad.images.all %}
    <img src="{{ ad_image.image.url }}">
{% endfor %}

也许相关名称"galleries"会更清楚。