【问题标题】:Django: filter by Date and timeDjango:按日期和时间过滤
【发布时间】:2023-03-23 19:57:02
【问题描述】:

我想按日期和时间过滤查询集...我想返回所有大于或等于今天 dateTime 的查询集

我尝试这样做,但什么也没发生

在视图中

def get_queryset(self):
        return self.request.user. user_booking.filter(time_date__date__gt=now().date())

模型类

class BookingModel(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_booking')
    hall = models.ForeignKey(HallModel, on_delete=models.CASCADE, related_name='hall_owner')

    time_date = models.DateTimeField(auto_now_add=True)
    booking_method = models.IntegerField()

【问题讨论】:

    标签: django django-models django-rest-framework django-forms django-views


    【解决方案1】:

    你应该在这里使用date.today(),或者timezone.now().date()

    from django.utils.timezone import now
    
    request.user.user_booking.filter(time_date__date__gte=now().date())

    因此,这将列出每个具有date_time 字段的对象,该字段的日期与您调用此函数时的日期相同。

    如果您不想要过滤登录用户,您应该过滤BookingModel经理:

    from django.utils.timezone import now
    
    BookingModel.objects.filter(time_date__date__gte=now().date())

    注意:Django模型的名称通常有noModel后缀,因此通常是Booking,没有 BookingModel.

    【讨论】:

    • 它给了我一个空列表......当我检查数据库时,我发现了一些比今天更严重的日期和时间
    • 您使用了now().date(),并使用了__gte(不是__gt)?
    • 这是我如何存储 dataTime "date_time": "2019-08-30T11:50:00.303983Z" 的一个例子
    • 我用 now().date() 和 __gte
    • @prg.dev:请分享您的模型。乍一看,您可能以某种方式将其存储为字符串。
    【解决方案2】:

    看来self.request.user.date_created 不是查询集,而是数据字段。

    根据您的模型代码,您在 BookingModel 有 time_date 字段,但在 User one 没有。

    因此,查询集应如下所示:BookingModel.objects.filter(user=self.request.user).filter(time_date__gt=datetime.datetime.now())

    【讨论】:

    • 它给了我一个空列表......当我检查数据库时,我发现一些日期和时间比今天更重要
    • 将您的问题附加到用户类模型代码中。这将有助于构建正确的查询集
    • 似乎您在 BookingModel 上有 time_date 字段,但在用户一中没有。因此,查询集应如下所示:BookingModel.objects.filter(user=self.request.user).filter(time_date__gt=datetime.datetime.now())
    • stile 给我空数组
    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2018-04-23
    • 2021-10-30
    • 1970-01-01
    • 2015-03-06
    • 2014-03-22
    相关资源
    最近更新 更多