【问题标题】:Get queryset date rage获取查询集日期范围
【发布时间】:2017-08-05 04:34:22
【问题描述】:

我有 2 个字段用于开始日期和结束日期。 如何获取介于开始日期和结束日期之间的行。

我的模特

class Shop(models.Model):
    time_begin = models.TimeField(max_length=255,
                              verbose_name=u'Время начала работы')
    time_end = models.TimeField(max_length=255,
                            verbose_name=u'Время окончания работы')

【问题讨论】:

标签: python django


【解决方案1】:

您可以将django's filterdatetime.time objects 一起使用:

import datetime
shops = Shop.objects.filter(time_begin__gte=datetime.time(10, 0, 0),
                              time_end__lte=datetime.time(22, 0, 0))

同样的(__gte & __lte)也可以用于DateTimeDate 字段。 但是,如果您使用的是 Django 2.2+,则可以根据需要使用适当的 built-in filters __time__hour__minute__second

【讨论】:

    【解决方案2】:

    您可以使用__lt__gt 过滤器来定位两者之间的日期。

    Shop.objects.filter(time_begin__gte=<date>, time_end__lt=<date>)
    

    如果您使用DateField 并希望包含结束日期,请使用lte,否则使用lt

    【讨论】:

    • ` WHERE (catalog_shop.id IN (4, 5, 6, 7, 8, 9, 10, 11, 12) AND catalog_shop.min_order catalog_shop.time_end catalog_shop.time_begin > 22:34:24.999000)
    猜你喜欢
    • 2014-06-27
    • 2023-04-02
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多