Django中__range函数的问题

时间:2018-07-26 16:00:02

标签: python django django-queryset

我需要做的是过滤特定区域和区域中某个日期范围内的所有销售对象。因此,我在查询中使用了__range函数

start = start_date.strftime('%d-%b-%y')
end = end_date.strftime('%d-%b-%y')
Sales.objects.filter(zone_code=zone_code_, region_code=region_code_, sales_date__range(start,end))

我所有的日期都存储为模型中的字符,因此我使用strftime()将输入日期更改为该格式。 但是此查询给我的对象超出了指定范围,有时甚至是空集。

1 个答案:

答案 0 :(得分:2)

__range不是函数,不能调用。它是Field lookup,需要附加到模型字段名称中,并作为关键字参数的关键字传递给例如filter()函数。该值必须是元组,且起始日期和结束日期的范围为:

Sales.objects.filter(
    zone_code=zone_code_, 
    region_code=region_code_, 
    sales_date__range=(start, end),  # pass the tuple as a kwarg
)

请注意=元组之前的(start, end)

您不需要将startend转换为字符串。