django“独家”复选框

时间:2011-06-09 03:13:00

标签: django django-admin

我想知道我怎么能在Django中拥有一个“独家”复选框并将其设置在管理员中?我的意思是我有一个存储民意调查的应用程序,并且首页中只能有一个,所以我将一个front_page字段添加到数据库并使其成为bool。真实的表现,假的没有。因此,每当我在管理员中将poll的front_page字段设置为true时,我希望每个其他轮询都设置为false,此编辑在admin中完成。作为一个Flasker,我可以想到在其他地方做到的100种方法,但是这个django让我感到困惑。谢谢!

1 个答案:

答案 0 :(得分:2)

基本上你要做的是覆盖具有独占标志的模型的save方法,然后在save方法中检查标志是否打开。如果是,则执行查询以查找已打开标记的所有记录并将其关闭。然后保存。它看起来像这样:

class Poll(models.Model):
    #...
    front_page = models.BooleanField()
    #...

    def save(self, *args, **kwargs):
        if self.front_page:
            Poll.objects.filter(front_page=True).update(front_page=False)

        super(Poll, self).save(*args, **kwargs)

希望这有帮助!