Django 合并重复行

Django merge duplicate rows

我有一个table这样的。

id|name                 |user_id     |amount|
--|---------------------|------------|------|
 1|Name1                |1           |     4|
 2|Name1                |1           |     7|
 3|Name2                |1           |     5|

我想合并具有相同 nameuser_id 的行,应该如下所示:

id|name                 |user_id     |amount|
--|---------------------|------------|------|
 1|Name1                |1           |    11|
 2|Name2                |1           |     5|

Django ver = 3.1

你不必按字面意思合并,但你可以使用GROUP BY来合并:

from django.db.models import Sum

YourModel.objects.values('name', 'user_id').annotate(total=Sum('amount')).values('name', 'user_id', 'total')

可以在 documentation of values() 中找到更多信息。