当前位置: 首页 > 面试题库 >

Django-按模板中的特定字段对查询集进行分组

穆正祥
2023-03-14
问题内容

我有一张桌子Events,是按田野排序的date

我想打印出模板中的事件,但为每个日期使用一个单独的div,例如:

<div class="content">
  <h1>December 30th</h1>
  <!-- div for Event 1 from December 30th -->
  <!-- div for Event 2 from December 30th -->
</div>

<div class="content">
  <h1>December 31st</h1>
  <!-- div for Event 1 from December 31st -->
  <!-- div for Event 2 from December 31st -->
  <!-- div for Event 3 from December 31st -->
</div>

我该怎么做呢?

我当前的解决方案是将Event对象放入以日期为键的字典中。这具有排序问题,并且效率低下。

视图:

events = Event.objects.select_related().all()

events_dict={}
for event in events:
    date=event.date.strftime('%d %B %Y')
    if date in events_dict:
        events_dict[date].append(event) 
    else:
        events_dict[date] = [event]

模板:

{% for date, events in events_dict.items %}
  <div class="content">
    <h1>{{date}}</h1>
    {% for event in events %}
      {% include "partials/event.html" %}
    {% endfor %}
  </div>
{% endfor %}

问题答案:

您正在寻找的{% regroup %}标签,正是您想要的。它需要一个项目序列(必须事先订购,您必须是它的顺序)和一个查询,并通过该查询将序列分组。

视图:

events = Event.objects.select_related.all()

模板:

{% regroup events by date as events_by_date %}
{% for date in events_by_date %}
    <div class="content">
    <h1>{{ date.grouper|date:"d F Y" }}</h1>
    {% for event in date.list %}
        {% include "partials/event.html" %}
    {% endfor %}
    </div>
{% endfor %}

(请注意,该日期格式字符串是不同的;相当于%BstrftimeF针对date过滤器)。



 类似资料:
  • 问题内容: 这可能无关紧要,只是想问一下, 如果一个对象从视图传递到模板,并且在模板中我将能够查询许多字段 型号代码: 观看次数: 在模板中可以解码多对多字段,因为我们正在传递对象 谢谢.. 问题答案: 通常,您可以通过django模板系统中的路径来跟踪任何不带参数的属性或方法调用。 对于上面的视图代码,类似 应该做您期望的。 (我无法完全从代码示例中找出具体细节,但希望这会阐明您可以从模板中学到

  • 本文向大家介绍MySQL查询以字符串字段中的数字字符对行进行分组?,包括了MySQL查询以字符串字段中的数字字符对行进行分组?的使用技巧和注意事项,需要的朋友参考一下 为此,您可以在+运算符的帮助下将0与字符串字段连接起来。这里的场景就像我们需要从字符串字段“ 9844Bob ”中获取数字“ 9844 ”。 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所

  • 我想根据性别将Person对象与收集器分组。toMap()函数如下所述,但这并不像我预期的那样工作。 错误提示 不兼容类型:推理变量U具有不兼容的边界相等约束:列出下界:Person,T#2,T#1,其中U,T#1,K,T#2是类型变量:U扩展方法中声明的对象 的类型 有人能解释这个错误吗?

  • 问题内容: 我需要从Django模板中执行过滤查询,以获取与视图中的python代码等效的一组对象: 在我的模板中,我想做 但我似乎无法找出如何编写FILTER。 问题答案: 你不能这样做,这是设计使然。Django框架的作者打算将表示代码与数据逻辑严格分开。过滤模型是数据逻辑,而输出HTML是表示逻辑。 因此,你有几种选择。最简单的方法是进行过滤,然后将结果传递给。或者,你可以在模型中编写一个方

  • 我在mongodb中收集了一些代表过去和未来事件的文档。文档中有两个日期字段“开始”和“结束”,它们是bson ISODATE对象。我正在做一个查找查询,它获取了不超过3天前结束的所有事件。 如何根据事件的今天和结束日期之间的时间(和日期)对该查询的响应进行排序。换句话说,2天前结束的事件应该发生在大约与2天后发生的事件相同的位置。这很重要,因为我不想首先显示所有已经发生的事件,也不想首先显示未来

  • 如何查询从mongodb MapReduce生成的集合中的特定字段? 要只检索输出集合中的lastname字段,应输入什么字段? 结果应为: {“lastname”:“Doe”} >版本() 版本:2.2.2 >db.test.save({first:“john”,last:“doe”}) >db.test.find() {“_id”:ObjectId(“50bc001A8E97247957C60

  • 问题内容: 我在Postgres服务器上有以下数据库表: 我想创建一个查询,给出了的按月份和年份如下列并对结果进行分组: 有没有简单的方法可以做到这一点? 问题答案: 应Radu的要求,我将解释该查询: :将“日期”属性转换为月的简短形式的定义格式。 :Postgresql的“提取”功能用于从“日期”属性中提取YYYY年。 :SUM()函数将所有“ Sales”值相加,并提供区分大小写的别名,并使

  • 问题内容: 关于stackoverflow的这个主题似乎有很多问题,但是我似乎在任何地方都找不到确切的答案。 我有的: 我有Company和Person模型: 我需要的: 查找姓氏为“ Robertson”的人已创建的所有公司 我试过的 然后我发现Person不是嵌入式的,而是被引用的,所以我使用populate来填充Founder- Person,然后尝试使用带有’Robertson’姓氏的fi