Django: Реализация Group_Concat с необязательным разделителем с помощью SQLITE
Хотя Django реализация Group_Concat на my_sql или mariaDB кажется хорошо документированной, я не могу заставить Group_Concat работать в Django с необязательным разделителем на SQLITE.
class GroupConcat(Aggregate):
function = 'GROUP_CONCAT'
separator = '-'
def __init__(self, expression, separator='-', distinct=False, ordering=None, **extra):
super(GroupConcat, self).__init__(expression,
distinct='DISTINCT ' if distinct else '',
ordering=' ORDER BY %s' % ordering if ordering is not None else '',
output_field=CharField(),
**extra)
self.separator = separator
Хорошо работает с разделителем по умолчанию ',' при использовании опции distinct
def as_sqlite(self, compiler, connection, **extra_context):
if self.separator:
return super().as_sql(
compiler, connection, separator=self.separator,
template="%(function)s(%(distinct)s%(expressions)s)",
**extra_context
)
Я понял, что в SQLITE мы не можем использовать разделитель distinct и declare, но я не понимаю, почему это не работает без разделителя, как в:
def as_sqlite(self, compiler, connection, **extra_context):
return super().as_sql(
compiler, connection, separator=self.separator,
template="%(function)s(%(expressions)s,%(separator)s)",
**extra_context
)
Что бы я ни пробовал, я всегда получаю ошибку:
File "C:\Users\Gil\Gilles\Perso\Maison\Projets perso\Formacube\Formacube test App\Github_FormApp\FormApp\venv\lib\site-packages\django\db\backends\sqlite3\base.py", line 423, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: near ")": syntax error