仅选择活动记录django查询

时间:2017-05-23 04:59:57

标签: python django database django-models django-rest-framework

在我的Django项目中,我的数据库的每个表都有一个is_active布尔列。每次我或框架访问数据库时,我只希望显示活动记录。实现这一目标的标准方法是什么?当然,我不想在每次查询中检查is_active

3 个答案:

答案 0 :(得分:2)

最简单的方法是创建一个自定义模型管理器,如下所示:

class OnlyActiveManager(models.Manager):
    def get_queryset(self):
        return super(OnlyActiveManager, self).get_queryset().filter(is_active=True)

然后,将其添加到您的模型中:

class MyModel(models.Model):
    objects = models.Manager()
    active = OnlyActiveManager()

接下来,像这样使用它:

foo = MyModel.active.all()

您也可以使用它来替换默认管理器(称为objects),但是您必须执行自定义查询以获取所有处于活动状态的记录。

答案 1 :(得分:0)

你可以使用django模型管理器来完成它。

请查看django documentaion了解详细信息django documentaion

答案 2 :(得分:0)

你可以为你的模型编写一个经理类,下面给出了一个样本模型管理器,更多你可以参考Django官方网站

class MediaManager(models.Manager):

    def get_queryset(self):
        return MediaQuerySet(self.model, using=self._db)

    def active(self):
        return self.filter(is_active=True)

class Media(models.Model):
    (..model fields..)
    objects = MediaManager()

查询应该像

media = Media.objects.active()