重复的Django ORM过滤器查询集

时间:2015-08-24 10:30:10

标签: django duplicates django-queryset

我正在寻找一种方法来获取数据库中可能重复的查询集。

简化型号:

class Artist(models.Model):
    name = models.CharField(max_length=255, db_index=True)

class Track(models.Model):
    name = models.CharField(max_length=255, db_index=True)
    artist = models.ForeignKey(related_name='tracks')

到目前为止工作的是一个查询以获取“跟踪”#39;同名:
(不是那么优雅,但速度并不重要,因为查询仅用于不经常的维护工作):

qs = Track.objects.all()
duplicates = Track.objects.values('name')\
    .annotate(Count('id'))\
    .filter(id__count__gt=1)    
qs = qs.filter(name__in=[item['name'] for item in duplicates])

有关如何扩展此内容以获取 Track.name 和相关 Artist.name 可能重复的查询集的任何想法?

0 个答案:

没有答案