python - 如何将自定义模型管理器设置为 Django 中的默认模型管理器?

标签 python django django-models

我在 Django 项目中有多个应用程序和模型。现在我想在所有应用程序模型中使用自定义模型管理器。我不想在每个模型中编写自定义模型管理器查询。 我只是想知道是否可以将自定义模型管理器设置为所有应用程序的默认模型管理器?

ma​​nager.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/

相关文章:

从应用程序更改时,django 简单历史记录不起作用

python - 连接两个具有不同值的数据帧

python - 使用Python执行动态SQL但收到异常

python - 将线轮廓仪与多处理一起使用

python - 如何为所有 ctype 结构类设置 __str__ 方法?

python - Django NOT NULL 约束在上传文件时失败 userprofile.user_id

python - @csrf_exempt 在 Django 1.4 中停止工作

python - 如何提高报告处理时间(Django/MySQL)?

django - 在保存 Django 模型实例时,相对于用作 ModelField 属性的方法,我的 clean() 和 save() 覆盖应用的顺序是什么?

mysql - Django IntegrityError 外键重复条目