【问题标题】:Django Datefield Filter using DateTime field使用 DateTime 字段的 Django Datefield 过滤器
【发布时间】:2011-12-31 06:52:22
【问题描述】:

我在 django-admin 中有一个过滤器,它显示“日期从”和“日期到”过滤器字段。问题是在“received_date”上过滤的字段是 DateTime 字段,而过滤器字段以以下格式显示日期“2011-10-01” - 这是预期的行为,过滤器应按日期列出所有项目不管时间。但是目前它不会列出任何结果,因为缺少时间。如何在不指定日期时间的情况下使过滤器工作?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    只需从给定的日期构造一个新的日期时间,并将其用于过滤查询集。对于“来自”(大于或等于)过滤器,将时间硬编码到午夜。对于“to”(小于或等于)过滤器,将时间硬编码为午夜前一秒:

    from datetime import datetime
    
    dt_from = datetime(d_from.year, d_from.month, d_from.day, 0, 0, 0)
    
    dt_to = datetime(d_to.year, d_to.month, d_to.day, 23, 59, 59)
    

    (如果您担心毫秒,请将 dt_设置为“第二天的午夜”并进行“小于”过滤。)

    【讨论】:

    • ...您可以通过添加 24 小时时间增量获得“第二天”,无需担心当月的最后一天。
    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2017-01-31
    • 2010-12-15
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多