У меня есть две независимые модели Budget и Conversion, как показано ниже.
class Budget(models.Model):
budget = models.FloatField(null=False, blank=False)
currency = models.ForeignKey(to=Currency, on_delete=models.PROTECT, null=False, blank=False)
date = models.DateField(null=False, blank=False, unique=False)
class Conversion(models.Model):
currency = models.ForeignKey(to=Currency, on_delete=models.PROTECT, null=False, blank=False)
rate = models.FloatField(null=True, blank=False)
date = models.DateField(null=False, blank=True, unique=False)
Я хочу добавить правило перед удалением преобразования объекта.Конверсию не следует удалять, если существует бюджет, который зависит от него.
Есть много сообщений об удалении объекта django, но я не смог найти приемлемого решения, у всех них есть недостатки.
То, что я пытался:
- Переопределение метода
.delete()
и повышение ValidationError -> возвращает ошибку сервера. - Реализация
@receiver(pre_delete, sender=Conversion)
и выдача ValidationError -> возвращает ошибку сервера - Переопределенный метод
.clean()
не вызывался при использовании Delete from admin.
Я был бы очень признателен за решение, которое позволило бы мне запретить пользователю удалять объекты конверсии и не возвращать ошибку 500.
Спасибо