Cancel saving model when using pre_save in django

django, python, signals

Solution

See my another answer: https://stackoverflow.com/a/32431937/2544762

This case is normal, if we just want to prevent the save, throw an exception:

from django.db.models.signals import pre_save, post_save

@receiver(pre_save)
def pre_save_handler(sender, instance, *args, **kwargs):
    # some case
    if case_error:
        raise Exception('OMG')

Problem

I have a model: ``` class A(models.Model): number = models.IntegerField() ``` But when I call A.save(), I want to ensure that number is a prime (or other conditions), or the save instruction should be cancelled. So how can I cancel the save instruction in the pre_save signal receiver? ``` @receiver(pre_save, sender=A) def save_only_for_prime_number(sender, instance, *args, **kwargs): # how can I cancel the save here? ```

Original source

Related problems