首页 > 解决方案 > 如何使布尔字段在 Django 中仅包含一个 True 值

问题描述

我正在制定一个储蓄计划,我已经实施了它,以便它可以循环工作。

有没有一种方法可以让我的布尔字段只强制执行一个活动循环?

模型.py

class Cycle(models.Model):
    cycle_name =  models.CharField( max_length=220, null=True, blank=True, unique=True)
    rate = models.IntegerField(default=15, null=True, blank=True)
    cycle_period_start = models.DateField(max_length=255, blank=False, null=False, unique=True)
    cycle_period_end = models.DateField(max_length=255, blank=False, null=False, unique=True)
    is_active = models.BooleanField(default=True) 

    def __str__(self):
        return self.cycle_period_start.year + "/" + self.cycle_period_end.year

基本上我想要的是,当我添加新周期时,该字段is_active设置False为其他周期。

感谢您的帮助

标签: pythondjango

解决方案


因此,您可以做的是在创建新周期之前更新所有不再活动的现有周期。

因此是这样的。

Cycle.objects.update(is_active=False)
Cycle.objects.create(is_active=True, ...)

推荐阅读