【问题标题】:Filtering django model using date使用日期过滤 django 模型
【发布时间】:2020-08-10 21:49:39
【问题描述】:

我需要使用日期过滤模型中的一些数据。我看到一些关于范围的帖子,但我只想查看例如 2020 年 4 月 22 日的表格中的行,换句话说,只有一天。

看了documentation,我明白我必须做到以下几点,

import datetime

prueba = DevData.objects.order_by('-data_timestamp').filter(data_timestamp=datetime.date(2020, 4, 22))
prueba = loads(serializers.serialize('json', prueba))
for p in prueba:
    print(p)

但出现以下警告:

RuntimeWarning:在时区支持处于活动状态时,DateTimeField DevData.data_timestamp 收到了一个幼稚的日期时间 (2020-04-22 00:00:00)。

列表显示为空。我认为问题在于只是使用2020-04-22 00:00:00 进行过滤,而不是整天过滤。我该如何解决这个问题?

在两个日期之间有效,但只有一天我不知道该怎么做。

import datetime

start_date = datetime.date(2020, 4, 22)
end_date = datetime.date(2020, 4, 23)
prueba = DevData.objects.order_by('-data_timestamp').filter(data_timestamp__range= (start_date,end_date))

PD:我今天有信息行。

非常感谢。

【问题讨论】:

    标签: django django-models django-views


    【解决方案1】:

    您可以使用__date lookup [Django-doc] 来过滤时间戳的日期:

    import datetime
    
    prueba = DevData.objects.order_by(
        '-data_timestamp'
    ).filter(
        data_timestamp__date=datetime.date(2020, 4, 22)
    )

    【讨论】:

    • 哇很容易(惭愧)...非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 2021-11-03
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2015-06-18
    • 2017-06-09
    相关资源
    最近更新 更多