如何在django中显示外键图像

how to display foreignkey image in django

问题来了,我对外键有点迷茫,我看过很多post,但我不是很明白。
我有一个项目 table:

class Item(models.Model):
    title = models.CharField(max_length=150)
    slug = models.SlugField(max_length=100)
    price = models.IntegerField()
    stock = models.IntegerField()
    description = models.TextField()
    image = models.ImageField(upload_to=item_file_name)

有一张图片是校长。当我列出所有项目时,在我的索引上我想看到每个项目的图像。但是,当我单击该项目时,我想查看该项目的所有图像(在另一个视图中)。所以我做到了。

class ImageOfItem(models.Model):
    picture = models.ImageField(upload_to=item_file_name_for_image)
    item = models.ForeignKey('Item')

我不知道它是否好用,但它确实有效。我可以在管理面板上添加一个带有图片的项目。然后我可以添加图像并将其附加到项目。(它有效,最好的方法是在创建项目时能够上传所有图像,但我更喜欢从简单开始)。
所以知道一切都如我所愿。但我不知道如何显示所有图像。 我的观点是这样的:

def view_item(request, id, slug):
    item = get_object_or_404(Item, id=id)
    return render(request, 'ecommerce/view_item.html', locals())

我不知道我是否也必须获取图像,或者 django 是否已经完成了。并且没有 var_dump 所以无法知道它是否在我的变量 item

我的模板:

{{item.title}}
{{item.description}}<br>
{{item.price}}<br>
{{item.stock}}<br>

<img src="{{ item.image.url }}"><br> //principal image it works !!
{% for img in item.ImageOfItem %}
    <img src="{{ img.picture.url }}"><br> //**all the image I want to display too (but don't know how)**
{% endfor %}

我也想展示所有图片(但不知道怎么展示)

你应该 follow relationship backwardItemImageOfItem:

{% for img in item.imageofitem_set.all %}
    <img src="{{ img.picture.url }}"><br>
{% endfor %}