您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django中的GROUP_CONCAT等效项

Django中的GROUP_CONCAT等效项

Django ORM不支持功能。如果你不想使用原始sql,则需要分组并加入。

你可以创建自己的聚合函数(doc)

from django.db.models import Aggregate

class Concat(Aggregate):
    function = 'GROUP_CONCAT'
    template = '%(function)s(%(distinct)s%(expressions)s)'

    def __init__(self, expression, distinct=False, **extra):
        super(Concat, self).__init__(
            expression,
            distinct='DISTINCT ' if distinct else '',
            output_field=CharField(),
            **extra)

并简单地用作:

query_set = Fruits.objects.values('type').annotate(count=Count('type'),
                       name = Concat('name')).order_by('-count')

我正在使用django 1.8和MysqL 4.0.3

Go 2022/1/1 18:23:33 有314人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶