Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Python 从django.db.models.sql.aggregates导入错误:没有名为aggregates的模块_Python_Django_Postgresql_Postgis - Fatal编程技术网

Python 从django.db.models.sql.aggregates导入错误:没有名为aggregates的模块

Python 从django.db.models.sql.aggregates导入错误:没有名为aggregates的模块,python,django,postgresql,postgis,Python,Django,Postgresql,Postgis,我一直面临一个特殊的聚合问题。在这段代码中,sumcase类有一个add_to_查询方法,该方法用于实例化聚合的SQL实现,并将其设置为类变量(aggregate),我将使用该变量在默认情况下调用as_SQL方法SQLaggregate (django/db.models.sql.aggregates.Aggregate)来自另一个文件 我的代码(第一个文件,如何实现聚合): django.db.models中没有名为aggregates的模块。sql也Aggregate不是此sql模块上的类。

我一直面临一个特殊的聚合问题。在这段代码中,sumcase类有一个add_to_查询方法,该方法用于实例化聚合的SQL实现,并将其设置为类变量
(aggregate)
,我将使用该变量在默认情况下调用as_SQL方法
SQL
aggregate
(django/db.models.sql.aggregates.Aggregate)
来自另一个文件

我的代码(第一个文件,如何实现聚合):


django.db.models中没有名为
aggregates
的模块。sql
Aggregate
不是此sql模块上的类。我认为你应该使用:


从django.db.models.sql导入聚合器

django.db.models.sql.aggregates模块从1.10版本中删除。

聚合模块已移动到
django.db.models
,如我在1.11.17版本中所见


不知道您是否遇到过这种情况,但这可能会有所帮助。

您使用的Django版本是Django 1.11.12 python 2.7.6虽然这从理论上可以回答这个问题,但可以建议仅作为注释。也许您可以通过单击并告知从哪个版本开始删除此模块来扩展答案。
from django.db.models.aggregates import Aggregate
from django.db.models.sql.aggregates import Aggregate as SQLAggregate

class SQLsumcase(SQLAggregate):

is_ordinal = True

sql_function = 'SUM'

sql_template = "%(function)s(CASE WHEN %(when)s THEN %(field)s ELSE 0 END)"

def __init__(self, col, **extra):
    if isinstance(extra['when'], basestring):
        extra['when'] = "%s" % extra['when']

    if extra['when'] is None:
        extra['when'] = True

    super(SQLSumCase, self).__init__(col, **extra)


class SumCase(Aggregate):