【问题标题】:Access image urls from Django ForeignKey relationship从 Django ForeignKey 关系访问图像 url
【发布时间】:2015-07-20 13:31:33
【问题描述】:

我目前有一个与这个定义相同的模型:

class Object(models.Model):
    name = models.CharField(max_length=50)


class ObjectImage(models.Model):
    object = models.ForeignKey('Object', related_name='images')
    image = models.ImageField(upload_to='./objects')

我正在尝试访问每个对象的所有图像的 url,以便它们可以显示在模板中。我尝试将对象放入列表中,然后访问 list[0].images 并返回“ProjectName.ObjectImage.None”。

有谁知道如何访问为 Object 类的每个实例保存的图像的 url?谢谢!

【问题讨论】:

    标签: django image django-models django-templates django-views


    【解决方案1】:

    您只需向您的模板提供 Object 即可访问 ObjectImages。它们将以这种方式提供:

    all_objects = Object.objects.all()
    context = {'all_objects': all_objects}
    render(render, your_template.html, context)
    

    在你的模板中,像这样:

    {% for each_object in all_objects %}
    
    {% for each_image in each_object.objectimage_set.all %}
    
    {{ each_image.image }}
    
    {% endfor %}
    
    {% endfor %}
    

    【讨论】:

    • 感谢您的回答。我试过了,但是没有用。所以我把它放在视图中:在设置等于具有图像的对象后打印 a.objectimage_set.all(),我得到错误“'Object'对象没有属性'objectimage_set'。我知道有关联的图像使用对象,因为当我包括:打印 Object.images.all() 时,我得到了 ObjectImage 的三个实例。
    • @tawalker 好的,我以为你想要它在你的模板中。要在您的视图中获取它,您只需调用 ObjectImage.objects.all() 即可获得所有对象图像。之后,这取决于您想对它们做什么
    • 我确实希望它出现在我的视野中。我只是把这些陈述放进去看看为什么它不起作用。不过我终于想通了。我不得不从外键字段中取出related_name='images'。一旦我这样做了,我就使用了您的原始答案,并且效果很好。谢谢!
    猜你喜欢
    • 2013-04-16
    • 2019-01-21
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多