Suppose my models.py is like so:
class Character(models.Model):
name = models.CharField(max_length=255)
is_the_chosen_one = models.BooleanField()
I tried some of these solutions, and ended up with another one, just for the sake of code shortness (don't have to override forms or save method). For this to work, the field can't be unique in it's definition but the signal makes sure that happens.
# making default_number True unique
@receiver(post_save, sender=Character)
def unique_is_the_chosen_one(sender, instance, **kwargs):
if instance.is_the_chosen_one:
Character.objects.all().exclude(pk=instance.pk).update(is_the_chosen_one=False)