如何根据 django 模板中的日期过滤列表

Posted

技术标签:

【中文标题】如何根据 django 模板中的日期过滤列表【英文标题】:How to filter a list according to date in templates in django 【发布时间】:2015-03-09 13:03:58 【问题描述】:

我有一个模型志愿者,其中有一个字段“registered_at = models.DateTimeField()”。 我正在将志愿者对象列表传递给模板。

我想在模板中创建一个下拉列表,以便我可以根据“registered_at”过滤掉对象。所以基本上我可以列出昨天、今天等注册的志愿者。

简而言之,我必须根据模板中的数据对模型对象进行分组。所以我在模板中有一个日期,所有在该日期注册的对象都在它下面。

我已经考虑了所有可能的想法并且很想转向 jquery。谁能给出一些简单的解决方案

【问题讨论】:

【参考方案1】:

在模板中本地执行此操作并不容易。但是,您可以向模型添加属性并在模板中访问它

models.py(在您的志愿者模型上;添加任意数量,即)

from datetime import date

@property
def registered_today(self):
    if date.today() == self.date:
        return True
    return False

然后,在你的模板中

<div class="
% if volunteer_object.registered_today %
    reg-today 
% elif volunteer_object.registered_yesterday %
    reg-yesterday
% endif %
    ">  volunteer_object  </div>

现在,根据选择过滤的内容,使用 JQuery 设置 div 显示属性。为每个用于过滤的复选框设置一个侦听器,并为未选中的类(例如“reg-yesterday”)设置display: none,为已选中的类设置display: block

【讨论】:

感谢您的帮助..我必须根据模板中的数据对模型对象进行分组吗?有没有办法或替代方案。所以我在它下面的那个日期堆栈上注册了日期和所有对象。 我起初误解了...已经编辑了我的答案。我不知道有任何 Django 模块可以解决这个问题,但 jQuery 会很简单 很抱歉再次询问您,过滤将是下一步。首先,我必须根据模板中的日期显示志愿者对象。我不想要昨天,今天这样的花哨的东西。只是日期和在该日期注册的志愿者名单 分组很简单,有几种方法可以做到。这个页面有一个很好的实现它的例子。 twigstechtips.blogspot.com/2011/03/… 从那里开始,我认为 jquery 可以根据 id/class 显示/隐藏 div(围绕每个分组)

以上是关于如何根据 django 模板中的日期过滤列表的主要内容,如果未能解决你的问题,请参考以下文章

Django:遍历模板中的过滤列表

模板中的 Django 动态对象过滤问题

针对特定类型的所有变量的 django 模板过滤器

如何根据类别过滤帖子列表

Django模板过滤器可将字符串转换为单个项目列表

Django“naturalday”模板过滤器:回退到格式化日期?