【问题标题】:TypeError: expected string or bytes-like object error for date range in DjangoTypeError:Django中日期范围的预期字符串或类似字节的对象错误
【发布时间】:2020-09-30 14:49:50
【问题描述】:

我正在尝试根据交货日期过滤 CartItem 对象。我定义了一个startfilterdate 和一个endfilterdate,我将它们格式化为一个字符串,其格式与我的delivery_date 的格式相同。不知道我做错了什么。

models.py

class CartItems(models.Model):
    restaurant = models.ForeignKey(Restaurant, related_name='restaurant', on_delete=models.CASCADE)
    delivery_date = models.DateField(auto_now_add=False)

views.py

class RestaurantOrders(generics.ListAPIView):
    serializer_class = RestaurantOrderSerializer

    def get_queryset(self):
        restaurant_id = self.kwargs['pk']
        startfilterdate = date.today()
        startfilterdate = startfilterdate.strftime("%Y-%m-%d")
        endfilterdate = date.today()+timedelta(days=9)
        endfilterdate = endfilterdate.strftime("%Y-%m-%d")
        orders = CartItems.objects.filter(restaurant_id = restaurant_id, delivery_date=[startfilterdate,endfilterdate])

错误:TypeError:预期的字符串或类似字节的对象

【问题讨论】:

    标签: django datetime filter


    【解决方案1】:

    使用range 查找,

    orders = CartItems.objects.filter(..., delivery_date<b>__range</b>=[startfilterdate,endfilterdate])

    【讨论】:

    • 啊啊啊我明白了,现在我读到的所有其他答案都有意义,不理解语法,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2020-08-24
    • 1970-01-01
    • 2017-01-19
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多