Unique BooleanField value in Django?

前端 未结 13 831
清酒与你
清酒与你 2020-12-07 14:11

Suppose my models.py is like so:

class Character(models.Model):
    name = models.CharField(max_length=255)
    is_the_chosen_one = models.BooleanField()
         


        
13条回答
  •  既然无缘
    2020-12-07 14:39

    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)
    

提交回复
热议问题