Django 模板过滤器查询集

2023-12-30

我是 django 的新手。 我有一个 Django 应用程序,其中存储按“X”和“Y”分类的产品。

views.py

...

class CartListView(ListView):

template_name = 'checkout/list.html'
context_object_name = 'product_list'

def get_queryset(self):
    return Product.objects.filter(category__slug='X') | Product.objects.filter(category__slug='Y')

def get_context_data(self, **kwargs):
    context = super(CartListView, self).get_context_data(**kwargs)
    context['minicurso'] = get_object_or_404(Category, slug='X')
    context['pacotes'] = get_object_or_404(Category, slug='Y')
    return context
...

在我的views.py中,我按您的类别slug过滤此产品。

问题是,我试图将类别“X”中的产品呈现在页面顶部,将类别“Y”中的产品呈现在下方,并在它们之间显示文本。我怎样才能做到这一点?

列表.html

{% for category in product_list %}
    {{ category.name }}
{% endfor %}

<p> 
    Any text 
</p>

{% for category in product_list %}
    {{ category.name }}
{% endfor %}

首先,你应该使用IN https://docs.djangoproject.com/en/dev/ref/models/querysets/#in运算符结束|填充过滤后的查询集时:

def get_queryset(self):
    return Product.objects.filter(category__slug__in=["X", "Y"])

其次,你不能通过模板中的任何字段过滤查询集,除非你写自定义模板标签 https://docs.djangoproject.com/en/dev/howto/custom-template-tags/这样做的。然而,它违背了表示代码与数据逻辑分离的目的。过滤模型是数据逻辑,输出HTML是表现。因此,您需要覆盖get_context_data并将每个查询集传递到上下文中:

def get_context_data(self, **kwargs):
    context = super(CartListView, self).get_context_data(**kwargs)

    context['minicurso'] = get_object_or_404(Category, slug='X')
    context['pacotes'] = get_object_or_404(Category, slug='Y')

    context["x_product_list"] = self.get_queryset().filter(category=context['minicurso'])
    context["y_product_list"] = self.get_queryset().filter(category=context['pacotes'])

    return context

然后您可以在模板中使用它们:

{% for category in x_product_list %}
  {{ category.name }}
{% endfor %}

...

{% for category in y_product_list %}
  {{ category.name }}
{% endfor %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 模板过滤器查询集 的相关文章

  • Visual Studio Code:如何使用参数调试 Python 脚本

    我正在使用 Visual Studio Code 来调试 Python 脚本 下列的本指南 https code visualstudio com docs python debugging 我在中设置了参数launch json file
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 如何使用 python http.server 运行 CGI“hello world”

    我使用的是 Windows 7 和 Python 3 4 3 我想在浏览器中运行这个简单的 helloworld py 文件 print Content Type text html print print print print h2 H
  • 类型错误:login() 需要 1 个位置参数,但给出了 2 个

    我使用内置身份验证 django 编写了一个登录视图auth login 我的代码给出了上述错误 错误代码为 o 500 from rest framework response import Response from rest fram
  • Python ElementTree 获取带有命名空间的属性

    我试图访问 XML 中的 def 所以在这个例子中我会得到Evolus Common PlainTextV2作为输出 我似乎无法弄清楚如何获取具有名称空间的属性 如果我想得到id它工作得很好 Python for content ns in
  • 从 Spark 数据帧中过滤大量 ID

    我有一个大型数据框 其格式类似于 ID Cat date 12 A 201602 14 B 201601 19 A 201608 12 F 201605 11 G 201603 我需要根据大约 500 万个 Is 的列表来过滤行 最直接的方
  • 如何使用 ipywidgets 创建动态依赖下拉菜单?

    我创建了一个带有两个下拉菜单的表单 我的目标是使一个下拉列表依赖于另一个下拉列表 这张图说明了我的目标和目前的情况 https i stack imgur com o9k5G png 下面的示例代码可以在 Google Colab 或 Ju
  • 如何解决CDK CLI版本不匹配的问题

    我收到以下错误 此 CDK CLI 与您的应用程序使用的 CDK 库不兼容 请将CLI升级到最新版本 云程序集架构版本不匹配 支持的最大架构版本为 8 0 0 但发现为 9 0 0 发出后cdk diff命令 我确实跑了npm instal
  • 为什么在 __init__ 函数中声明描述符类会破坏描述符功能?

    在下面的 B 类中 我想要 set 每当您赋值给 A 类中的函数时 就会调用该函数B a 相反 将值设置为B a覆盖B a与价值 C类分配给C a工作正常 但我想为每个用户类都有一个单独的 A 实例 即我不想在 C 的一个实例中更改 a 来
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • Python 中使用 globals() 的原因?

    Python 中有 globals 函数的原因是什么 它只返回全局变量的字典 这些变量已经是全局的 所以它们可以在任何地方使用 我只是出于好奇而问 试图学习Python def F global x x 1 def G print glob
  • python lxml 使用iterparse编辑并输出xml

    我已经在 lxml 库上摆弄了一段时间了 也许我没有正确理解它 或者我错过了一些东西 但我似乎无法弄清楚在捕获某个 xpath 后如何编辑文件并且然后能够在逐个元素解析时将其写回到 xml 中 假设我们有这个 xml 作为示例
  • telethon 库:如何通过电话号码添加用户

    我正在研究 Telegram 的 Telethon 库 它可以使用 Telegram API 充当 Telegram 客户端 重要提示 这是电报客户端 API https core telegram org telegram api 而不是
  • python:xml.etree.ElementTree,删除“命名空间”

    我喜欢 ElementTree 解析 xml 的方式 特别是 Xpath 功能 我有一个带有嵌套标签的应用程序的 xml 输出 我想按名称访问此标签而不指定名称空间 这可能吗 例如 root findall molpro job 代替 ro
  • 具有行业级约束的 SciPy 投资组合优化

    尝试在这里优化投资组合权重分配 通过限制风险来最大化我的回报函数 我可以毫无问题地通过简单的约束 所有权重之和等于 1 找到产生我的回报函数的优化权重 并做出另一个约束 即我的总风险低于目标风险 我的问题是 如何为每个组添加行业权重界限 我
  • Django 按小时过滤

    我找到了那个链接 http code djangoproject com attachment ticket 8424 time filters diff http code djangoproject com attachment tic
  • 重写 PyGObject 中的虚拟方法

    我正在尝试实施高宽几何管理 http developer gnome org gtk3 3 2 GtkWidget html geometry management在 GTK 和 Python 中用于我的自定义小部件 我的小部件是来自的子类
  • “yield item”与 return iter(items) 相比有何优点?

    在下面的示例中 resp results 是一个迭代器 版本1 items for result in resp results item process result items append item return iter items
  • Django:登录用户并在同一页面上刷新而不定义模板?

    我正在尝试使用引导下拉登录表单来让用户登录 我可以对我的用户名和密码进行硬编码并进行身份验证 但我试图在不进入登录屏幕的情况下让用户登录 这是我的代码 模板 我使用操作来调用 logUserIn url 以便表单可以发布到该视图 ul cl
  • AES 在 cryptojs 中加密并在 python Crypto.Cipher 中解密

    使用 js CryptoJS 加密并使用 python crypto Cipher 解密时出现问题 这是我在js中的实现 附加 iv 与加密消息并使用 base64 进行编码

随机推荐