【问题标题】:Django - concat datetimeField/timeField and compareDjango - 连接 datetimeField/timeField 并进行比较
【发布时间】:2013-08-18 05:22:21
【问题描述】:

我想将查询集中的 DateField 和 TimeField 与当前日期进行比较。我搜索了几个小时,但没有找到任何东西。使用 Q/F-Object 进行了很多尝试,但也没有解决方案。现在我在这里,希望有人知道如何解决这个问题:) - 顺便说一句。拆分为日期和时间不是我的错,也没有办法将其更改为 DateTimeField(在其他项目中依赖太多)。

class Model(models.Model):
    date = models.DateField()
    time = models.TimeField()

在 MySQL 中,我会执行以下操作:
SELECT * FROM app_model WHERE CAST(CONCAT(CAST(date as CHAR),' ',CAST(time as CHAR)) as DATETIME) >= NOW()

感谢您的任何建议!

【问题讨论】:

    标签: django model datefield timefield


    【解决方案1】:

    您可以使用 or'd 查询集约束(Q 对象)来做到这一点:

    now = datetime.datetime.now()
    future_models = Model.objects.filter(Q(date__gt=now.date()) | (Q(date=now.date()) & Q(time__gte=now.time())))
    

    选择日期为今天过去的所有实例,以及日期为今天且时间大于或等于当前时间的所有实例。

    【讨论】:

    • 谢谢!像魅力一样工作:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多