Python 仅选择活动记录django查询

Python 仅选择活动记录django查询,python,django,database,django-models,django-rest-framework,Python,Django,Database,Django Models,Django Rest Framework,在我的Django项目中,我的数据库的每个表中都有一个is\u activeboolean列。每次我或框架访问数据库时,我只希望显示活动记录。实现这一目标的标准方法是什么?当然,我不想在每次查询中都检查是否处于活动状态 您可以使用django模型管理器来实现这一点 请查看django文档了解详细信息您可以使用django模型管理器来完成 请查看django文档了解详细信息最简单的方法是创建自定义模型管理器,如下所示: class OnlyActiveManager(models.Manager)

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

您可以使用django模型管理器来实现这一点


请查看django文档了解详细信息

您可以使用django模型管理器来完成


请查看django文档了解详细信息

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

class OnlyActiveManager(models.Manager):
    def get_queryset(self):
        return super(OnlyActiveManager, self).get_queryset().filter(is_active=True)
foo = MyModel.active.all()
然后,将其添加到您的模型中:

class MyModel(models.Model):
    objects = models.Manager()
    active = OnlyActiveManager()
接下来,像这样使用它:

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

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

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

class OnlyActiveManager(models.Manager):
    def get_queryset(self):
        return super(OnlyActiveManager, self).get_queryset().filter(is_active=True)
foo = MyModel.active.all()
然后,将其添加到您的模型中:

class MyModel(models.Model):
    objects = models.Manager()
    active = OnlyActiveManager()
接下来,像这样使用它:

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

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

您可以为您的模型编写一个管理器类,下面给出了一个模型管理器示例,有关更多信息,请参考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()

您可以为您的模型编写一个管理器类,下面给出了一个示例模型管理器,有关更多信息,请访问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()

使用模型管理器使用模型管理器