Django Проверьте ограничение для MySQL 5,7 альтернатив - PullRequest
0 голосов
/ 30 марта 2020

К моему ужасу (после того, как я так рад его использованию), CheckConstraints недоступны в MySQL БД менее 8.0.16. Я использую MySQL 5.7 и не похоже, что буду обновляться в ближайшее время.

Я использую Django v2.2 и хотел применить новые ограничения к моей БД: https://docs.djangoproject.com/en/2.2/ref/models/constraints/

(Документы могут нуждаться в обновлении, чтобы сказать, что проверочные ограничения не работают с MySQL версиями, меньшими, чем xyz)

Я хочу знать, есть ли у кого-нибудь хорошая рабочая альтернатива для этого варианта использования.

В настоящее время я включил сигнал на pre_save, чтобы вызвать IntegrityError, если ограничение соответствует.

@receiver(pre_save)
def object_constraint(sender, instance, **kwargs):
    if issubclass(sender, MyClass):
        if instance.constraint_is_met:
            raise IntegrityError("What are you even...?")

Спасибо

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