Ограничение количества инстанций класса с определенным значением до одного - django
У меня есть два класса в приложении django, project
и plan
Класс проекта имеет поле is_global
boolean, как и класс плана. План также имеет внешний ключ к классу проекта (проекты имеют несколько планов).
Я пытаюсь добиться следующего: для проектов и планов должно быть только по одному экземпляру каждого из них, где is_global = true
. Глобальный план должен принадлежать глобальному проекту.
Возможно ли применить эту логику с помощью моделей django?
Вы можете переписать функцию сохранения каждой модели, чтобы проверить наличие предыдущих элементов 'is_global'
Модель проекта
def save(self):
if self.is_global:
other_global = Project.objects.filter(is_global=True).exists()
if other_global:
#handle the error, eg, raise an exception or send a message
return
super.save()
Модель плана
def save(self):
if self.is_global:
other_global = Plan.objects.filter(is_global=True).exists()
if other_global:
#handle the error, eg, raise an exception or send a message
return
if not self.project.is_global:
#handle the error, eg, raise an exception or send a message
return
super.save()