python - Django 显示相关名称列表中的第一项
问题描述
我正在使用 Python(3.7) 和 Django(2.2) 开发一个项目,在该项目中我已经实现了两个模型ItemModel
,Images
因此每个项目都会有多个图像并将项目添加到images
模型中并添加一个related_name
但是当我尝试访问这些图像时Django 模板没有提供有关这些图像的任何信息。
这是我的模型:
来自 models.py
:
class ItemModel(models.Model):
stock_number = models.IntegerField(blank=False)
title = models.CharField(max_length=255, blank=False)
price = models.IntegerField(blank=False)
description = models.TextField(max_length=1000)
condition = models.CharField(max_length=255, choices=COND_CHOICES, blank=False)
model = models.CharField(max_length=255)
dimensions = models.CharField(max_length=255)
make = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
class Images(models.Model):
item = models.ForeignKey(ItemModel, on_delete=models.CASCADE, related_name='images')
image = models.ImageField(upload_to=images_directory_path)
更新:这是我用来重命名图像的功能:
def images_directory_path(instance, filename):
return '/'.join(['images', str(instance.item.id), str(uuid.uuid4().hex + ".png")])
这是我正在尝试访问模板中某个项目的这些图像:
{% for img in item.images.all %}
{% if forloop.first %}
<td> {{ item.images.first.name }}</td>
{% endif %}
{% endfor %}
这是视图:
来自views.py
:
class Inventory(View, LoginRequiredMixin):
def get(self, request):
items = None
try:
items = ItemModel.objects.all()
except ItemModel.DoesNotExist:
return redirect('home')
return render(request, 'app/inventory.html', {'all_items': items})
这里有什么问题?
解决方案
看起来你只需要
{% for img in item.images.all %}
{% if forloop.first %}
<td> <img src="{{ img.image.url }}"/> </td>
{% endif %}
{% endfor %}
推荐阅读
- ms-media-foundation - 使用 Media Foundation 编码的 AVI 索引损坏或丢失
- swift - 如何在 SwiftUI 中的所有选项卡视图之间共享状态
- python - 现在无法在 macOS Big Sur 上使用 setup.py 进行安装
- html - 内联 SVG 增加了父元素的高度 - 为什么以及如何防止它?
- sql - 如何执行存储在另一个表中的准备好的 SQL 语句
- vba - Vba Numberformat 多个条件来格式化单元格值
- angular - Angular 环境文件没有及时交换
- bash - 使用 awk 如何明智地获取日期?
- python-3.x - 使用pickle时.dat文件中的奇怪事情
- dart - 如何在 Dart 中实现异常链?