У меня есть такая настройка (упрощенная для этого вопроса):
class Employee(models.Model):
name = models.CharField(name, unique=True)
class Project(models.Model):
name = models.CharField(name, unique=True)
employees = models.ManyToManyField(Employee)
Когда сотрудник будет удален, я хочу проверить, подключен ли он к каким-либо проектам. Если это так, удаление должно быть невозможным.
Я знаю о сигналах и как их обрабатывать. Я могу подключиться к сигналу pre_delete
и заставить его генерировать исключение, например ValidationError
. Это предотвращает удаление, но оно не обрабатывается изящно формами и т.д.
Это похоже на ситуацию, с которой столкнулись другие. Я надеюсь, что кто-то может указать на более элегантное решение.