我在 Django 项目中有多个应用程序和模型。现在我想在所有应用程序模型中使用自定义模型管理器。我不想在每个模型中编写自定义模型管理器查询
。
我只是想知道是否可以将自定义模型管理器设置为所有应用程序的默认模型管理器?
manager.py
class CustomQuerySet(models.Manager):
def get_queryset(self):
return super(CustomQuerySet, self).get_queryset().filter(status=True)
最佳答案
您可以创建这样的自定义管理器并覆盖 get_queryset
方法,或者您可以添加自己的方法和过滤器。
class PublishedManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(status='published')
class Post(models.Model):
# ...
objects = models.Manager() # The default manager.
published = PublishedManager() # custom manager.
这个自定义(PublishedManager)管理器将允许您使用Post.published.all()检索帖子。
这将使所有帖子的状态为已发布。
这允许您拥有两个管理器objects
,即默认管理器和published
(自定义管理器),或者您可以像这样覆盖默认管理器objects = PublishedManager ()
关于python - 如何将自定义模型管理器设置为 Django 中的默认模型管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625069/