В моей базе данных есть дубликаты для пары полей, которые я хотел бы удалить.
Можно ли сделать это, просто установив unique_together
для пары и мигрировав?Я использую Django 2.0.Вот модель (с уже добавленным unique_together
):
class Candle(models.Model):
symbol = models.CharField(max_length=32)
name = models.CharField(max_length=32)
timestamp = models.DateTimeField()
open = models.FloatField()
high = models.FloatField()
low = models.FloatField()
close = models.FloatField()
volume = models.FloatField()
def __str__(self):
return 'Candlestick for {} at {}.'.format(self.symbol,
self.timestamp)
class Meta:
indexes = [
models.Index(fields=['symbol']),
models.Index(fields=['timestamp'])
]
unique_together = (('symbol', 'timestamp'),)
В противном случае, каков наилучший способ отбросить эти дубликаты и избежать вставки новых?Должен ли я перейти непосредственно в PostGreSQL, удалить дубликаты и затем применить правило?
Я нашел два возможных решения для удаления дубликатов:
- Цикл через набор запросовдубликатов
- Прямо из SQL