Unique BooleanField value in Django?

前端 未结 13 841
清酒与你
清酒与你 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条回答
  •  萌比男神i
    2020-12-07 14:45

    The following solution is a little bit ugly but might work:

    class MyModel(models.Model):
        is_the_chosen_one = models.NullBooleanField(default=None, unique=True)
    
        def save(self, *args, **kwargs):
            if self.is_the_chosen_one is False:
                self.is_the_chosen_one = None
            super(MyModel, self).save(*args, **kwargs)
    

    If you set is_the_chosen_one to False or None it will be always NULL. You can have NULL as much as you want, but you can only have one True.

提交回复
热议问题