Django:按日期和时间过滤

时间:2019-08-16 19:49:25

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

我想按日期和时间过滤查询集...我想返回所有大于或等于今天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()

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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模型的名称通常后缀为 no Model,因此通常为Booking not < / em> BookingModel