diff --git a/drakul/users/models.py b/drakul/users/models.py index b11e11d..13db412 100644 --- a/drakul/users/models.py +++ b/drakul/users/models.py @@ -123,5 +123,12 @@ class Character(models.Model): def clean(self): self.name = self.name.capitalize() + def delete(self, *args, **kwargs): + if self.user.main == self: + # Sanity check: this is already checked by the profile and admin forms which allow character deletion, but + # we check it again to avoid unintentionally cascading the delete to the entire user. + raise ValidationError("Can't delete user's main character.") + return super().delete(*args, **kwargs) + def __str__(self): return self.name