Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django注释数字范围-属性错误:';数值范围';对象没有属性';解析表达式';_Django_Django Orm_Django Annotate - Fatal编程技术网

Django注释数字范围-属性错误:';数值范围';对象没有属性';解析表达式';

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

我有DRF自定义过滤器,我正在努力为
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))