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

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

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

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

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

【问题讨论】:

    标签: jquery django django-models django-forms django-templates


    【解决方案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(围绕每个分组)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2015-01-29
    相关资源
    最近更新 更多