在djang中获取副本

2024-06-17 12:51:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的数据库中有这个名称字段,其中很多名称是重复的。我想让它们独一无二。我知道我可以设置unique = True,但这只会对以后的条目有所帮助。我想知道目前所有的条目都有重复的名字。有没有一种简单的方法可以打印出医生模型中所有重复的名字?在

class Doctor(models.Model):
   name = models.CharField(max_length=1300)

Tags: 方法name模型名称数据库truemodelmodels
2条回答

班主任(模型。模型): 名称=模型.CharField(最大长度=1300,唯一=True)

要从数据库中删除所有重复项,必须先问自己一个问题—如何处理它们?删除?以某种方式合并?更改每个副本的名称?在

在回答了这个问题之后,只需构造数据迁移(使用RunPython迁移),它将对每个重复的条目执行所需的操作。在

要找到所有重复项:

from django.db.models import Count
with_duplicates = Doctor.objects.annotate(count=Count('id')).order_by('id').distinct('name').filter(count__gt=1)

该查询将从重复组中首先从数据库(按id)中获取记录(例如,如果您有3个名为“who”的医生,它将首先获取其中的一个医生,并且它将只获取具有重复项的医生)。在

这样,对于每个有重复项的医生,您可以得到重复项的列表:

^{pr2}$

和他们做点什么。在

相关问题 更多 >