在以下基本查询中,是否有一种简单的方法来删除重复项:
email_list = Emails.objects.order_by('email')
我试着用duplicate()
,但没用.在没有重复项的情况下执行此查询的确切语法是什么?
在以下基本查询中,是否有一种简单的方法来删除重复项:
email_list = Emails.objects.order_by('email')
我试着用duplicate()
,但没用.在没有重复项的情况下执行此查询的确切语法是什么?
这个查询不会给你重复的数据——也就是说,它会给你数据库中所有的行,通过邮箱排序.
然而,我想你的意思是,你的数据库中有重复的数据.在这里添加distinct()
没有帮助,因为即使你只有一个字段,你也有一个自动的id
字段——所以id+邮箱的组合不是唯一的.
假设您只需要一个字段email_address
,消除重复,您可以这样做:
email_list = Email.objects.values_list('email', flat=True).distinct()
但是,您应该真正解决根本问题,并从数据库中删除重复数据.
例如,按邮箱字段删除重复邮箱:
for email in Email.objects.values_list('email', flat=True).distinct():
Email.objects.filter(pk__in=Email.objects.filter(email=email).values_list('id', flat=True)[1:]).delete()
或书名:
for name in Book.objects.values_list('name', flat=True).distinct():
Book.objects.filter(pk__in=Artwork.objects.filter(name=name).values_list('id', flat=True)[3:]).delete()