gpt4 book ai didi

python - Django 模型在模板中不可迭代

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:41 25 4
gpt4 key购买 nike

我正在尝试遍历模型以获取列表中的第一张图像,但它给我的错误是模型不可迭代。以下是我的模型和模板代码。我只需要获取与单个产品关联的列表中的第一张图片。

模型.py:

class Product(models.Model):
title = models.CharField(max_length=500)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(max_digits=20, decimal_places=2)
sku = models.CharField(null=True, max_length=100)
url = models.URLField(blank=True)
slug = models.SlugField(unique=True)
categories = models.ManyToManyField('Category', blank=True)
default = models.ForeignKey('Category', related_name='default_category', null=True, blank=True)
provider = models.ForeignKey('Product', on_delete=models.CASCADE)

def __unicode__(self):
return self.title

def get_absolute_url(self):
return reverse('product_detail', kwargs={"slug": self.slug})

def get_image_url(self):
img = self.productimage_set.first()
if img:
return img.image.url
return img
def get_image_list(self):
return self.productimage_set.all()

def image_upload_to(instance, filename):
title = instance.product.title
slug = slugify(title)
basename, file_extension = filename.rsplit('.', 1)
new_filename = '%s-%s.%s' % (basename, instance.id, file_extension)
return 'products/%s/%s' % (slug, new_filename)

class ProductImage(models.Model):
product = models.ForeignKey(Product)
image = models.ImageField(upload_to=image_upload_to)

def __unicode__(self):
return self.product.title

产品细节.html:

<div class="pics clearfix">
<div class="thumbs">
{% for img in product.get_image_list %}
<div class="preview">
<a href="{{ img.get_absolute_url }}" class="selected" data-full="{{ img.image.url }}" data-title="title"> <img src="{{ img.image.url }}"> </a>
</div>
{% endfor %}
</div>
<div class="imglarge">
{% for img in object.productimage_set.all %}

<a href="{{ object.get_absolute_url }}" class="full" title="title"> <img src="{{ img.image.url }}"> </a>

{% endfor %}

</div>
</div>

图像列表正常,但第一张图像没有出现,因为它显示所有带有 {% for img in object.productimage_set.first %} 的图像,它显示错误如下:

'ProductImage' object is not iterable
Request Method: GET
Request URL: http://localhost:8000/items-for-kids
Django Version: 1.8.13
Exception Type: TypeError
Exception Value:
'ProductImage' object is not iterable
Exception Location: C:\Users\AliKhan\eCom\lib\site-packages\django\template\defaulttags.py in render, line 161
Python Executable: C:\Users\AliKhan\eCom\Scripts\python.EXE
Python Version: 2.7.9

最佳答案

您使用all 获取所有 相关产品图片并遍历它们:

{% for img in object.productimage_set.all %}

但是如果你得到一个单一的对象,比如当你得到第一个相关的产品图片时,你就不能迭代:

{{ object.productimage_set.first }}

这就是你得到错误的原因

object is not iterable

您只有一个对象。如果您需要所有对象,您应该考虑使用 all

关于python - Django 模型在模板中不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com