Django在赋值错误之前不断返回引用的局部变量'product'

问题描述 投票:1回答:2

我在我的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,
                }
python django view model
2个回答
2
投票

我想您忘了导入产品了。所以像这样更新你的代码:

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 %}

2
投票

您可以导入具有不同名称的产品(或)更改变量名称。像from selling.models import product as product_model所以在其余的代码中你可以使用product_model。这应该清除所有混乱,因此你不应该有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.