Какие существуют solid альтернативы уникальному ограничению Django с условием? - PullRequest
0 голосов
/ 28 мая 2020

Цель:

Я хочу убедиться, что есть только один активный owner на Thing.

Проблема:

Поскольку наша БД - MySQL, я не могу использовать параметр condition для Django s UniqueConstraint. Я ищу надежную масштабируемую альтернативу этому:

class Thing(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    active = models.BooleanField()

    class Meta:
        constraints = [
            UniqueConstraint(
                fields=['owner'],
                condition=Q(active=True),
                name='one_active_owner_per_thing'
            )
        ]

Было бы лучше создать отдельную таблицу для активных Thing s, переопределить метод сохранения или что-то еще?

...