对 Django 模板中的相关项目进行排序

2024-03-23

是否可以对 DJango 模板中的一组相关项目进行排序?

即:这段代码(为了清楚起见,省略了 HTML 标签):

{% for event in eventsCollection %}
   {{ event.location }}
   {% for attendee in event.attendee_set.all %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

显示almost正是我想要的。我唯一想要更改的是按姓氏排序的与会者列表。我试过这样说:

{% for event in events %}
   {{ event.location }}
   {% for attendee in event.attendee_set.order_by__last_name %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

唉,上面的语法不起作用(它产生一个空列表),我想到的任何其他变体也不起作用(报告了很多语法错误,但没有什么乐趣)。

当然,在我看来,我可以生成某种排序的与会者列表数组,但这是一个丑陋且脆弱的(我是否提到过丑陋的)解决方案。

不用说,但无论如何我都会说,我仔细阅读了在线文档并搜索了 Stack Overflow 和 django-user 的档案,但没有找到任何有用的东西(啊,如果只有一个查询集是字典 dictsort 就可以了工作,但事实并非如此)

===============================================

编辑以添加额外的想法 接受Tawmas的回答后。


陶马斯完全按照我提出的方式解决了这个问题——尽管解决方案并不是我所期望的。结果我学到了一种有用的技术,也可以在其他情况下使用。

汤姆的回答提出了一种我在OP中已经提到过的方法,并因“丑陋”而暂时拒绝。

“丑陋”是一种本能反应,我想澄清它出了什么问题。在这样做的过程中,我意识到这是一种丑陋的方法,因为我沉迷于将查询集传递给要渲染的模板的想法。如果我放宽这一要求,那么有一种不丑陋的方法应该可行。

我还没有尝试过这个,但假设视图代码不是传递查询集,而是迭代查询集,生成事件列表,然后用对应参加者的查询集装饰每个事件WAS以所需的方式排序(或过滤,或其他方式)。像这样:

eventCollection = []   
events = Event.object.[filtered and sorted to taste]
for event in events:
   event.attendee_list = event.attendee_set.[filtered and sorted to taste]
   eventCollection.append(event)

现在模板变成:

{% for event in events %}
   {{ event.location }}
   {% for attendee in event.attendee_list %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

缺点是视图必须立即“实现”所有事件,如果有大量事件,这可能会成为问题。当然,可以添加分页,但这会使视图变得相当复杂。

好处是“准备要显示的数据”代码位于其所属的视图中,让模板专注于格式化视图提供的数据以供显示。这是正确的、正当的。

所以我的计划是对大表使用 Tawmas 的技术,对小表使用上述技术 表格,将大和小的定义留给读者(笑。)


您可以使用模板过滤器dictsort https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-dictsort https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-dictsort

这应该有效:

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

对 Django 模板中的相关项目进行排序 的相关文章

  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 来自多元 t 分布的样本 python

    我想知道Python中是否有一个从多元学生t分布中采样的函数 我有包含 14 个元素的均值向量 14x14 协方差矩阵和自由度 我想从这个 t 分布中采样一个向量 对于一维情况 我使用 stats t rvs df loc scale 并且
  • 如何将数据从 JavaScript 发送到 Python

    我正在 jinja2 和 python2 7 上使用 GAE 进行 Web 开发 我可以从Python获取数据 但我无法将数据从 JavaScript 发送到 Python 这是 JavaScript 代码 function toSave
  • 以编程方式结束/退出粘合作业

    我正在使用 Glue 书签来处理数据 我的工作是每天安排的 但也可以 手动 启动 由于我使用书签 有时胶水作业可以在没有新数据要处理的情况下启动 然后读取的数据帧为空 在这种情况下 我想好好地结束我的工作 因为它没有什么关系 我试过 if
  • 如何使用 django Rest 框架保存多对多字段对象

    我有博客 发布 标签三个模型 在博客模型中 我将字段 postedin 作为发布模型的外键 将 标签 作为标签模型的许多字段 模型 py class Posted models Model name models CharField Pos
  • django-tastypie:无法访问脱水中的bundle.request(self,bundle)

    我发现有人有同样的问题 但他的安慰对我不起作用 看Django Tastypie 如何访问 Bundle 中的 Http request 对象 https stackoverflow com questions 7389632 我正在尝试应
  • 我可以在pycharm中的断点处进入交互模式吗

    我是一个相当新的 Pycharm 3 用户 正在从事 django 项目 我可以在 pycharm3 中的断点处进入交互模式吗 这可能吗 当程序在断点处停止时 我尝试过工具 gt 打开调试命令行 但我没有看到控制台打开 我怎样才能让它发挥作
  • Python 中 eval("input()") 和 eval(input()) 之间的区别

    我正在尝试以下功能 x eval input 输入为 123 x 的类型也是int 它工作正常 In 22 x eval input enter enter 123 In 24 print type x
  • 如何在 Django 中像应用程序一样从配置中注册 Flask 蓝图?

    如何从我的配置中注册 Flask 蓝图 就像 Django 中的应用程序一样 我想在配置文件中定义蓝图 它将自动注册 config py BLUEPRINTS news files 实际上我一直在一个暂定名为的项目中勾勒出类似的东西臀部口袋
  • pandas groupby 并转换为 json 列表

    我有一个如下所示的 pandas 数据框 idx f1 f2 f3 1 a a b 2 b a c 3 a b c 87 e e e 我需要将其他列转换为基于索引列的字典列表 所以 最终结果应该是 idx features 1 f1 a f
  • 将具有多个时区的 pandas 列转换为单个时区

    Problem 我在 pandas DataFrame 中有一个列 其中包含带有时区的时间戳 此列中有两个不同的时区 我需要确保只有一个 这是该列末尾的输出 260003 2019 05 21 12 00 00 06 00 260004 2
  • 如何检查discord.py中的所有者

    我试图让这个命令只有所有者才能运行它 是否有办法检查服务器的最高角色或创建者 我尝试了 commands is owner 但这仅检查某人是否是机器人的所有者 Guild owner https discordpy readthedocs
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • AppEngine 警告 - OpenBLAS 警告 - 无法确定该系统上的 L2 缓存大小

    我尝试在 GC AppEngine 上部署应用程序 部署过程中没有错误 但应用程序无法运行 仅显示加载页面 日志中唯一一个奇怪的原始日志 OpenBLAS WARNING could not determine the L2 cache s
  • 如何在 Python 中连接两个列表?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如何在 Python 中连接两个列表 Example listone 1 2 3 lis
  • 如何将 Django 数据库中的模板标签解释/渲染为 HTML

    我正在尝试添加带有来自 Django 管理站点的图像的帖子 但安全 自动转义关闭过滤器无法解释 Django 的模板标签 My input and page look like 复制图像地址 给出http 127 0 0 1 8000 7B
  • Pandas 数据框可对多列和要列出的值进行字典

    我有一个数据框 id key a1 1 a2 1 a3 1 a4 2 a5 2 a6 3 我想创建一本字典key作为机器号 并且id列作为列表 like 1 a1 a2 a3 2 a4 a5 3 a6 我可以先使用 groupby 然后再使
  • 如何使用 PySpark 预处理图像?

    我有一个项目 需要为 1 设置大数据架构 AWS S3 SageMaker 的概念验证使用 PySpark 预处理图像 2 执行 PCA and 3 训练一些机器或深度学习模型 我的问题是了解如何使用 PySpark 操作图像数据 但无法在
  • 重写 __cmp__ python 函数

    嗨 我是压倒一切的 cmp 如果传递的第二个对象是None 或者如果它不是一个实例someClass 然后返回 1 我不明白这里到底发生了什么 class someClass def cmp self obj if obj None ret
  • 在不同进程之间共享列表?

    我有以下问题 我编写了一个函数 它将列表作为输入 并为列表中的每个元素创建一个字典 然后我想将这本字典附加到一个新列表中 这样我就得到了一个字典列表 我正在尝试为此生成多个进程 我的问题是 我希望不同的进程访问由其他进程更新的字典列表 例如

随机推荐

  • Angular 6:获取对 ng-container 标签内使用 *ngFor 创建的组件的引用

    我使用 ng container 迭代列表并创建组件
  • 关于在 SQL Server 中实现审计表的建议?

    我过去使用的一种简单方法基本上只是创建第二个表 其结构反映了我想要审核的表 然后在主表上创建一个更新 删除触发器 在更新 删除记录之前 当前状态通过触发器保存到审计表中 审计表中的数据虽然有效 但并不是最有用或最容易报告的 我想知道是否有人
  • 无法使用 C# 连接到密码加密的 MS Access 2016 数据库

    当我尝试连接到 MS Access 2016 数据库时 它无需密码即可完美连接 但是当我在使用密码加密后尝试连接到同一数据库时 出现以下错误 无法打开数据库 它可能不是您的应用程序识别的数据库 或者文件可能已损坏 我不知道我应该做什么 我的
  • 带有auto的initializer_list包含多个表达式

    相当简单的问题 auto x11 1 2 3 4 auto x1 1 2 3 4 auto x22 1 0 2 25 3 5 auto x2 1 0 2 25 3 5 据我了解 这里应该没有什么区别 或不 但是 使用 llvm clang
  • OpenJPA 2.1.1 - 找不到元素“persistence”的声明

    我刚刚下载了http www apache org dyn closer cgi openejb 4 0 0 beta 1 apache tomee 1 0 0 beta 1 webprofile zip http www apache o
  • 如何发出返回引用的动态方法?

    我正在浏览 ref 返回的来龙去脉 并且在发出由 ref 返回的动态方法时遇到问题 手工制作的 lambda 表达式和现有方法按预期工作 class Widget public int Length delegate ref int Wid
  • 如何键入组织捕获的动态文件条目

    我试图弄清楚是否有某种方法可以创建动态文件名以在 emacs org mode 中捕获 z test entry file headline A date specific headline Notes prompt 是否有一些简单的方法将
  • 如何进入android studio中的文件资源管理器

    好吧 我不知道如何进入 android studio 中的文件资源管理器 我已经尝试搜索堆栈溢出 并发现了我所问的相同问题 但那里的解决方案不起作用 那么有人可以通过屏幕截图告诉我如何进入文件资源管理器吗 对于 Android Studio
  • 如何检查字符串中是否包含特定单词?

    a how are you if strpos a are false echo true 在 PHP 中 我们可以使用上面的代码来检查字符串是否包含特定单词 但是如何在 JavaScript jQuery 中执行相同的功能 你可以为此使用
  • 如何修复 flutter 上的“simple_permissions”错误?

    当我在 flutter 项目上运行包含 simple permissions 的代码时出现错误 Initializing gradle Resolving dependencies Running Gradle task assembleD
  • 散景中的多线悬停

    正如在这个问题中 多线散景和 HoverTool https stackoverflow com questions 32975709 bokeh multi line and hovertool 我发现悬停工具没有针对多线图实现 这是一个
  • 从 UIWebView 创建 PDF 文件

    void createPDFfromUIView UIView aView saveToDocumentsWithFileName NSString aFilename Creates a mutable data object for u
  • 有没有办法在 Objective-C 中使用 Swift 结构而不将它们作为类?

    我有几个简单的structs在 swift 文件中用 swift 编写 这些structs非常简单 几乎只包含字符串 struct Letter struct A static let aSome String descASome stat
  • 汇总数据框忽略重复

    我有一个数据框 其中一列中有重复的条目 我想根据该专栏总结其他专栏 我希望摘要在进行摘要时考虑每个唯一条目而不是总数 例如 在下面的数据框示例中 如果我想回答以下问题受访者中有多少人是年轻人 中年人和老年人 RefID 1 1 在总结 ag
  • 如何解决错误:预期标识符或“(”

    我正在编程的东西有问题 我一遍又一遍地收到这个错误 jharvard appliance Dropbox pset1 make mario clang ggdb3 O0 std c99 Wall Werror mario c lcs50 l
  • (obj == null) vs (null == obj)?

    我的老板说我应该使用null obj 因为它比obj null 但他不记得为什么要这样做 有什么理由使用null obj 我以某种方式感觉到了 相反 经过谷歌搜索后 我唯一发现的是 在 C 中 它可以防止您意外地在条件结构中键入 obj n
  • iPhone文档文件夹库/缓存安全问题

    我开发了一款iOS应用程序 出于安全原因 我将所有音频 视频文件下载到下的 Documents 文件夹中库 缓存 对于使用 iTunes 最终用户无法备份此视频 但有些外部软件很容易打开库 缓存并从此文件夹下载所有文件 我的问题是如何保护此
  • 如何在IntelliJ 2021.2.2中使用Lombok插件?

    我是从 C 开始接触 Java 的 我一直在努力熟悉这门语言 我正在尝试使用 IntelliJ IDEA 的 lombok 插件 但它似乎根本不适合我 这是我的IDEA无法识别 value 注释的屏幕截图 https i stack img
  • 您能否将多个不同的值类型分配给重复的 Protobuf 消息中的一个字段?

    我正在尝试对客户端进行逆向工程 该客户端将音频文件上传到服务器 然后在单独的请求中上传文件的元数据 元数据在 Protobuf 中序列化 并且使用相当简单且可读的结构 这是之后的样子protoc decode raw 1 1 title 2
  • 对 Django 模板中的相关项目进行排序

    是否可以对 DJango 模板中的一组相关项目进行排序 即 这段代码 为了清楚起见 省略了 HTML 标签 for event in eventsCollection event location for attendee in event