Как я могу предотвратить дублирование строк в 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',)
Вернуться на верх