python - Django 2 在我的模板页面中结合 ListView 和 DetailView
问题描述
我有两个模型“产品”和“品牌”产品有品牌字段ManyToMany将产品与相关品牌联系起来
## models.py
class Product(models.Model):
title = models.CharField(max_length=120)
slug = models.SlugField(blank=True, unique=True)
description = models.TextField()
brand = models.ManyToManyField(Brand)
class Brand(models.Model):
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(max_length=250, unique=True)
description = models.TextField(blank=True)
## url.py
re_path(r'^brands/(?P<slug>[\w-]+)/$', BrandDetail.as_view(), name = 'branddetail'),
## views.py
class BrandDetail(DetailView):
queryset = Brand.objects.all()
template_name = "brands/brand.html"
## brands/brand.html
{{ object.title }} <br/>
{{ object.description }} <br/>
现在,当我渲染brand.html时,它会很好地显示品牌名称和描述
我的问题是,如果我想在同一页面中呈现链接到特定品牌的产品列表“考虑到 URL 中已经传递的品牌信息”,我该怎么做?
该类是DetailsView,它在查询集中只有品牌详细信息,如图所示!我需要任何解决方案而不是 ne
解决方案
你不需要一个ListView
,你可以迭代product_set
品牌,比如:
{{ object.title }} <br/>
{{ object.description }} <br/>
products:
{% for product in object.product_set.all %}
{{ product.title }} <br/>
{% endfor %}
推荐阅读
- android - 在通话期间处理媒体播放器服务
- django - Django 错误“WSGIRequest”对象没有属性“玩家”
- python - 有什么方法可以清除所有小部件并重新创建相同的小部件,例如刷新屏幕以在 tkinter python 中获取新输入?
- python - 使用 MySQL 和 Python 访问特定数据
- tiktok - 如何使用他们的 API 更改 tiktok 用户名?
- react-leaflet - 安装 react-leaflet 后的错误
- javascript - 清除间隔不适用于javascript中的transitionend事件
- java - Jboss 操作(“添加”)失败
- javascript - 反应路由器 dom 尾部斜杠给出错误而不是转到 404 页面
- angular - Angular中的页面重定向问题