我在我的django模型中存储了一个产品列表,其中每个产品都附有多个图像作为外键。我试图在我的django视图中检索所有产品及其各自的图像,以便我可以在屏幕上打印它们。但无论我做什么,我都会在分配错误之前继续获取本地变量'product'参考。
Models.py:
class product(models.Model):
title = models.CharField('', max_length=100, db_index=True)
price = models.CharField('', max_length=100, db_index=True)
description = models.CharField('', max_length=100, db_index=True)
class productimage(models.Model):
product = models.ForeignKey(product, on_delete=models.CASCADE)
product_images = models.FileField(blank=True)
views.py:
from django.shortcuts import render
from selling.models import product
from selling.models import productimage
from django.shortcuts import redirect
from django.template import loader
template = loader.get_template("selling/shop.html")
if product.objects.exists():
products = product.objects.all()
for product in products:
productimages = product.productimage_set.all()
for productimage in productimages:
imageurl = productimage.product_image.url
context = {
"products" : products,
"productimages" : productsimages,
}
我想您忘了导入产品了。所以像这样更新你的代码:
from .models import product # use camel case when writing class name
此外,您的实现在视图中有点复杂(循环产品和产品图像)。您可以将大部分内容移动到这样的模板:
template = loader.get_template("selling/shop.html")
products = product.objects.all()
if products.exists():
context = {
"products" : products,
}
模板:
{% for product in products %}
{% for product_image in product.productimage_set.all %}
<img src="{{product_image.product_image.url}}">
{% enfor %}
{% endfor %}
您可以导入具有不同名称的产品(或)更改变量名称。像from selling.models import product as product_model
所以在其余的代码中你可以使用product_model
。这应该清除所有混乱,因此你不应该有任何问题。