К моему ужасу (после того, как я так рад его использованию), 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...?")
Спасибо