Как определить два Django полей, уникальных в определенных условиях - PullRequest
1 голос
/ 12 июля 2020

Я хочу сделать Django Поля модели уникальными с двумя полями (значениями) в некоторых условиях.

есть два поля: 'team', 'type'. И я хочу сделать менеджера команды уникальным

Например:

team=1, type='manager'
team=1, type='manager'

-> Недоступно

team=1, type='manager'
team=1, type='member'
team=1, type='member'
team=2, type='manager'

-> Доступно

Я думаю, что unique_together('team', 'type') не будет работать должным образом в этой ситуации.

Как я могу сделать это с Django моделью?

Вот моя модель ниже:

class myModel(models.Model):
    team = models.ForeignKey('Team', on_delete=models.CASCADE)
    type = models.CharField(max_length=10, default='member')
    class Meta:
        db_table = 'my_models'

1 Ответ

1 голос
/ 12 июля 2020

Я думаю, вам нужно использовать UniqueConstraint для вашего приложения, которое идеально работает в конкретной ситуации.

class myModel(models.Model):
    team = models.ForeignKey('Team', on_delete=models.CASCADE)
    type = models.CharField(max_length=10, default='member')
    class Meta:
        db_table = 'my_models'
        constraints = [
             models.UniqueConstraint(fields=['team', 'type'], name='unique_team')
        ]

вы также можете указать эту ссылку для больше понимания. и дайте мне знать, сработает ли следующее решение.

...