Django注释数字范围-属性错误:';数值范围';对象没有属性';解析表达式';
我有DRF自定义过滤器,我正在努力为Django注释数字范围-属性错误:';数值范围';对象没有属性';解析表达式';,django,django-orm,django-annotate,Django,Django Orm,Django Annotate,我有DRF自定义过滤器,我正在努力为numeriRange构建查询 我需要用两个计算值创建numeriRange(或整数的其他范围),然后使用该字段使用\uuuu重叠对其进行过滤 def filter_range(queryset, name, value): queryset = queryset.annotate( number_range=ExpressionWrapper( NumericRange(F(f"{name}_base
numeriRange
构建查询
我需要用两个计算值创建numeriRange
(或整数的其他范围),然后使用该字段使用\uuuu重叠
对其进行过滤
def filter_range(queryset, name, value):
queryset = queryset.annotate(
number_range=ExpressionWrapper(
NumericRange(F(f"{name}_base"), F(f"{name}_base") + F(f"{name}_extend")),
output_field=NumericRange(),
),
).filter(number_range__overlap=(value.start, value.stop))
当我使用此过滤器时,我得到:
'numeriRange'对象没有属性'resolve\u expression'
我想也许我使用了错误的范围字段或其他东西,但我找不到更好的
解决方案 我找到了一个解决方案,我只是将Func与取自
def filter_range(queryset, name, value):
queryset = queryset.annotate(
number_range=Func(
F(f"{name}_base"),
F(f"{name}_base") + F(f"{name}_extend"),
function="NUMRANGE",
output_field=RangeField(),
),
).filter(number_range__overlap=NumericRange(value.start, value.stop))