You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中实现相同KARIŞIM KODU的HARMAN值求和合并记录

实现思路与代码示例

方案一:新增数据时实时合并(推荐)

在处理POST请求创建数据时,先检查是否存在相同karisim的记录,存在则直接累加harman值,不存在再新建。修改视图代码如下:

from django.http import JsonResponse
from .models import ProjeVerileri

def handle_proje_verileri(request):
    if request.method == 'POST':
        karisim = request.POST.get('karisim')
        harman_str = request.POST.get('harman')
        
        # 转换为对应数值类型,根据字段实际类型调整(比如DecimalField用Decimal)
        try:
            harman_value = int(harman_str)
        except ValueError:
            return JsonResponse({'status': 'error', 'msg': 'Harman值格式错误'}, status=400)
        
        # 查找或创建记录
        record, is_new = ProjeVerileri.objects.get_or_create(
            karisim=karisim,
            defaults={'harman': harman_value}
        )
        
        # 非新建则累加更新
        if not is_new:
            record.harman += harman_value
            record.save()
        
        return JsonResponse({
            'status': 'success',
            'data': {'karisim': record.karisim, 'harman': record.harman}
        })
    return JsonResponse({'status': 'error', 'msg': '仅支持POST请求'}, status=405)

方案二:批量合并已有重复记录

如果数据库已经存在大量重复karisim的记录,需要一次性合并,可执行以下脚本(在Django Shell或自定义管理命令中运行):

from .models import ProjeVerileri
from django.db.models import Sum

# 按karisim分组求和
aggregated_result = ProjeVerileri.objects.values('karisim').annotate(total_harman=Sum('harman'))

# 注意:执行前务必备份数据!
ProjeVerileri.objects.all().delete()

# 批量插入合并后的记录
ProjeVerileri.objects.bulk_create(
    [ProjeVerileri(karisim=item['karisim'], harman=item['total_harman']) for item in aggregated_result]
)

方案三:查询时动态合并(不修改数据库)

如果不需要改变数据库存储,仅在展示时合并数据,直接用聚合查询即可:

from django.db.models import Sum

# 获取合并后的结果集
merged_data = ProjeVerileri.objects.values('karisim').annotate(total_harman=Sum('harman')).order_by('karisim')

# 遍历使用示例
for item in merged_data:
    print(f"KARIŞIM KODU: {item['karisim']}, HARMAN: {item['total_harman']}")

关键提示

  • 方案一从源头避免重复记录,适合日常新增数据场景;
  • 方案二会清空原有数据,操作前必须备份;
  • 方案三仅用于展示需求,不改变数据库结构。

内容的提问来源于stack exchange,提问作者EMRE DAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:37:15