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