Django - 删除具有相同多个关联的记录

时间:2018-03-17 13:59:07

标签: django duplicates many-to-many

我有两种模式:

class DjProfile(DateTimeModel):
    name = models.CharField(max_length=150, db_index=True)
    ...

class Track(models.Model):
    all_producers = models.ManyToManyField(DjProfile)
    all_remixers = models.ManyToManyField(DjProfile)
    title = models.CharField(max_length=200, db_index=True)
    track_link = models.CharField(max_length=150, blank=True, null=True)
    ...

我有很多Track的{​​{1}}记录,title的值相同,all_producers的值相同但all_remixers不同。我想只保留一份不论track_link值的记录,这些记录可能会有所不同。

我可能会遍历track_link的所有记录,但我有一个非常大的表(如2M记录),我担心性能。解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为这可能有用,

import time
N = 10000000

# String test
print('String Test')
t0 = time.clock()
slot_1 = 'med kit'
g = 0
for x in range(N):
    if slot_1 == 'med kit':
        g = g + 1
t1 = time.clock()
total = t1-t0     
print("%.8F seconds\n" % total)

# Integer test
print('Integer Test')
t0 = time.clock()
slot_1 = 0
g = 0
for x in range(N):
    if slot_1 == 0:
        g = g + 1
t1 = time.clock()
total = t1-t0 

print("%.8F seconds\n" % total)


注意:我还没试过,(在删除之前先备份:P)