【发布时间】:2020-12-20 11:48:36
【问题描述】:
我正在使用模型产品和图像。我的目标是在我的单个项目页面中显示来自模型“图像”的项目相关图片库
如何更改以下代码以按项目 slug 过滤并仅显示特定于 slug 的画廊。
物品类别
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
image = models.ImageField(, upload_to='catalog/images/', blank=True)
slug = models.SlugField()
图像类
class Images(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
title = models.CharField(blank=True, max_length=50)
image = models.ImageField(upload_to='catalog/images/', blank=True)
产品详情视图
class ProductDetailView(DetailView):
model = Item
template_name = 'product.html'
context_object_name = 'item'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['image_gallery'] = Images.objects.all()
return context
product.html 页面
<div class="row wow fadeIn">
{% for img in image_gallery %}
<div class="col-lg-4 col-md-12 mb-4">
<img src="{{img.image.url}}" class="img-fluid" alt="">
</div>
【问题讨论】:
-
context['image_gallery'] = Images.objects.all().filter(pk=self.object.pk) -
@Crosby 此解决方案仅在图库中显示 1 张图片。在数据库中,该产品有 3 张图片。我正在使用蛞蝓。如何确保所有 3 张图片都显示在图库中?
-
context['image_gallery'] = Images.objects.filter(item=self.object)我认为应该可以吗? -
@Brioproject 我写它作为答案。你能验证它吗?谢谢。
标签: django detailview