Как имитировать уникальное поведение для полей многие ко многим? - PullRequest
2 голосов
/ 30 октября 2019

Мне нужно обработать три поля из модели как уникальные. Проблема в том, что одним из них является ManyToManyField, поэтому я не могу использовать встроенную функциональность Django unique_together. Как бы вы справились с этой проблемой? База данных, которую я использую, - MySQL.

Пример:

class A(models.Model):
    name = models.CharField(max_length=255)

class B(model.Model):
    name = models.CharField(max_length=255)
    other_field = models.CharField(max_length=255)
    a_m2m = models.ManyToManyField(A, blank=True)

И я хочу, чтобы name, other_field и все поля из отношения m2m были уникальными вместе.

Итак, следующие "строки"для B рассматриваются как единое целое и уникальны (с м2м):

name: 1, other_field: 1, a_m2m: (1, 2, 3)
name: 1, other_field: 1, a_m2m: (1, 2)
name: 1, other_field: 2, a_m2m: (1, 2, 3)
name: 1, other_field: 1, a_m2m: (1, 2, 4)

Как бы вы сделали это в Django / MySQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...