当Django中的列数据相同时,合并2条记录以记录

xoshrz7s  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(110)


的数据
如果“KARIQUIEIM KODU”相同,我如何将“HARMAN”值的总和放入1个记录中

class ProjeVerileri(models.Model):
    harman = models.CharField(max_length=250,blank=True,null=True)
    karisim = models.CharField(max_length=250,blank=True,null=True)
    def __str__(self):
        return str(self.harman +' / ' + self.karisim)

字符串
这是我的模型,最后我希望我的数据看起来像这样


if request.method == 'POST':
    karisim=request.POST.get('karisim')
    harman=request.POST.get('harman')
    ProjeVerileri.objects.create(
            karisim=karisim,
            harman = harman,
        )


这是我的观点

e7arh2l6

e7arh2l61#

可以将创建ProjectVerileri的视图更改为:

if request.method == 'POST':
    karisim = request.POST.get('karisim')
    harman = request.POST.get('harman')
    item, created = ProjeVerileri.objects.get_or_create(
        karisim=karisim,
        defaults={'harman': harman},
    )
    if not created:
        item.harman += harman
        item.save(update_fields=('harman',))

字符串
所以如果该项目已经存在,我们会更新它。
如果您清理了数据库,即确保karisim不再有重复,您还可以通过将其标记为唯一来强制执行此操作:

class ProjeVerileri(models.Model):
    harman = models.CharField(max_length=250, blank=True, null=True)
    karisim = models.CharField(max_length=250, blank=True, null=True, unique=True)

    def __str__(self):
        return f'{self.harman} / {self.karisim}'

备注:使用Form [Django-doc]比手动验证和清理数据更好。Form不仅可以简化HTML中表单的 * 呈现 *,而且还可以更方便地 * 验证 * 输入,并将数据 * 清理为更方便的类型。

相关问题