Как я могу предотвратить дублирование строк в Django, когда ни одно поле не является уникальным?
При сохранении объекта существует ли простой способ предотвратить дублирование, когда комбинация всех полей вместе содержит одинаковые данные?
Параметр unique=True здесь, похоже, не поможет, потому что по отдельности любые данные могут быть продублированы, но никогда все одновременно.
Оператор If с несколькими и условиями не кажется мне разумным способом, поэтому я ищу лучший подход. Предоставляет ли его Django? Все, что я смог найти, связано с дублированием одного поля или другого.
Ex.:
if Model.objects.filter(field_A=source_A).exists() == True and Model.objects.filter(field_B=source_B).exists() == True and Model.objects.filter(field_C=source_C).exists() == True:
continue
else:
*save object*
Вы можете использовать unique_together
так:
class MyModel(models.Model):
field1 = models.CharField(max_length=10)
field2 = models.CharField(max_length=10)
class Meta:
unique_together = ('field1', 'field2',)