我有两个非常简单的产品和照片课程。我想在商店的主页上展示产品以及与外键有关的照片。但是我不知道该怎么做,我找到了很多答案,可以使用诸如“ prefetch_related”之类的联接在视图中实现此目的,但是我的ID会根据情况而改变。那么,您如何展示每种产品的照片?有我不知道的Django标记吗?
我的模型。py
class Product(models.Model)
name = models.CharField(max_length=10)
class Image(models.Model)
image = models.ImageField()
name_related = models.ForeignKay(Product, on_delate=models.CASCADE)
views.py
def home(request):
product_list = Product.objects.all()[:12]
#img = ??
context = {'product_list': product_list,
}
return render(request, 'home.html', context)
home.html
{% for product in product_list %}
{{ product.name }}
<!-- {{ product.imge }} ' element presenting the first photo for each 'product' model'???-->
{% endfor %}
任何帮助将不胜感激。
答案 0 :(得分:1)
就做
{% for product in product_list %}
{{ product.name }}
{% for image in product.image.all %}
<!-- {{ image.image.url }} -->?
{% endfor %}
{% endfor %}
答案 1 :(得分:1)
既然已经建立了外部关系,您就可以从父模型中遍历相关模型。
相关模型已经可以从父模型访问,而无需做任何明确的事情。
您可以在模板中执行以下操作:
{% for product in product_list %}
{{ product.name }}
{% for product_image in product.image.all %}
<!-- Iterate through this products related images -->
{{ product_image.image.url }}
{% endfor %}
{% endfor %}
出于性能方面的考虑,您将需要预取关系,否则将对每个产品进行附加查询,因此,在您看来,您需要添加以下内容:
product_list = Product.objects.all().prefetch_related('image')[:12]