Django注释NumericRange-AttributeError:“ NumericRange”对象没有属性“ resolve_expression”

问题描述

我有DRF自定义过滤器,并且正在为NumericRange建立查询

我需要使用两个计算出的值创建NumericRange(或其他整数范围),然后使用该字段使用__overlap对其进行过滤。

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))

使用此过滤器时,我得到:

'NumericRange' object has no attribute 'resolve_expression'

我认为也许我使用了错误的范围字段或其他东西,但是找不到更好的东西。


解决方 我找到了解决方案,并且我刚刚将Func与Postgres documentation

中的NUMRANGE一起使用
def filter_range(queryset,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))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...