Как создать UniqueConstraint для таблицы отношений M2M в Django ORM? - PullRequest
1 голос
/ 14 июля 2020
class MyChoices(models.IntegerChoices):
    CHOICE_A = 1
    CHOICE_B = 2


class MyModelA(models.Model):
    choice = models.IntegerField(choices=MyChoices.choices)
    payload = models.CharField(...)


class MyModelB(models.Model):
    models_a = models.ManyToManyRelationshipField(MyModelA, ...)
    payload = models.CharField(...)

Можно ли создать таблицу UniqueConstraint в app_my_model_b_my_model_a с полем MyModelA.choice и полем первичного ключа MyModelB?

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете определить модель как through=… модель [Django -doc] :

class MyChoices(models.IntegerChoices):
    CHOICE_A = 1
    CHOICE_B = 2


class MyModelA(models.Model):
    choice = models.IntegerField(choices=MyChoices.choices)


class MyModelB(models.Model):
    models_a = models.ManyToManyRelationshipField(MyModelA, <b>through='MyModelC'</b>)

class MyModelC(models.Model):
    model_a = models.ForeignKey(MyModelA, on_delete=models.CASCADE)
    model_b = models.ForeignKey(MyModelB, on_delete=models.CASCADE)

    class Meta:
        constraints = [
            models.UniqueConstraint(<b>fields=['model_a', 'model_b']</b>, name='unique_a_b')
        ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...