django - 按外键过滤图像
问题描述
我有一个Image
模型和一个Category
模型。我想在我的category_detail
视图中只显示相应类别的图像。
模型.py
class Category(models.Model):
category_title = models.CharField(max_length=200)
category_image = models.ImageField(upload_to="category")
category_description = models.TextField()
slug = models.SlugField(max_length=200, unique=True, default=1)
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.category_title
class Image(models.Model):
category = models.ForeignKey(Category, on_delete="CASCADE")
image = models.ImageField()
caption = models.CharField(max_length=250)
class Meta:
verbose_name_plural = "Images"
def __str__(self):
return str(self.image)
视图.py
def category_detail_view(request, slug):
category = get_object_or_404(Category, slug=slug)
context = {
"gallery": Image.objects.filter(Category),
}
return render(request, 'main/category_detail.html', context)
category_detail.html
{% for image in gallery %}
<div class="col-md-4">
<a href="{{ image.url }}"> <img src="{{ image.url }}" class="img-responsive img-thumbnail" width="304" height="236"/>
</a>
</div>
{% endfor %}
解决方案
您可以使用以下方法过滤它们:
def category_detail_view(request, slug):
category = get_object_or_404(Category, slug=slug)
context = {
'gallery': Image.objects.filter(category=category),
}
return render(request, 'main/category_detail.html', context)
或不在单独的查询中获取类别:
您可以使用以下方法过滤它们:
def category_detail_view(request, slug):
context = {
'gallery': Image.objects.filter(category__slug=slug),
}
return render(request, 'main/category_detail.html', context)
推荐阅读
- python - 如果列中的行之一匹配某个值,如何返回数据框
- upload - Watson Assistant 上传文件
- asp.net - 反序列化嵌套的 JSON 和 VB.Net (Postmark Json)
- concurrency - 如何同时启动 2 个 CUDA 内核?
- c# - 如何修复错误“请求过滤模块配置为拒绝查询字符串过长的请求”
- r - 在带有正则表达式的 data.table 中使用 %in%
- watchos - WatchOS 6.2.6 - 无法使用独立应用测试 sanbox 应用内购买
- branch - 有人使用anylogic 与Branch 合作吗?
- flutter - 颤振:如何制作自定义颤振容器?
- javascript - 我无法使用 Id 选择元素?