从Django.db.型号.sql.聚合ImportError:没有名为aggregates的模块

2024-05-14 20:37:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

Tags: 文件django方法代码fromimportdbsql
3条回答

如我在1.11.17版中所见,aggregates模块已被移到django.db.models

不知道这是否是你遇到的情况,但它可能会有所帮助。在

django.db.models.sql中没有名为aggregates的模块,而且Aggregate也不是此sql模块上的类。你应该用:

from django.db.models.sql import AggregateQuery

在django.db.型号.sql.聚合模块已从1.10版本中删除。在

相关问题 更多 >

    热门问题