python - Django 中的 "Manager"是什么?

标签 python django

我看过Django官方的定义documentation ,我仍然对 Manager 的作用感到困惑。

文档说它们允许你对数据库表/模型进行操作,但我还是不明白这一点。

有人可以向我解释经理及其角色吗?最好有一个例子的答案。

最佳答案

管理器通常是对 django 程序员隐藏的东西,django 使用它来连接 model 代码和数据库后端。

当您查询 django ORM 时,您可以通过调用

from my_app.models import MyModel

mms = MyModel.objects.all()

在这种情况下,函数的 objects 部分是管理器返回的内容。如果你希望 MyModel 只获得 blue MyModel 实例(数据库也可能包含 red 模型)那么你可以创建一个管理器并破解你的模型因此

class BlueManager(models.Manager):
    def get_query_set(self):
        return super(BlueManager, self).get_query_set().filter(colour='Blue')

class MyModel(models.Model):
     colour = models.CharField(max_length=64)
     blue_objects = BlueManager()

和调用

MyModel.blue_objects.all()

只会返回 colourblue 的对象。请注意,这是一种非常糟糕的过滤模型的方法!

如果他们要修改经理通常返回的 QuerySet 或者如果您需要添加“表”,通常需要修改 Manager 接口(interface)级别查询(而不是常规的 Django“行”级别)。 documentation for managers 非常完整,包含几个示例。

关于python - Django 中的 "Manager"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689237/

相关文章:

python - django 和 uwsgi 上的语言环境 UnicodeEncodeError

python - 使用 NLTK 的语义角色标记

python - 用 NaN 替换 Inf 导致 AttributeError

python - lambda 的字符串表示

python - Django 中 2 个数据库 (mySQL) 的问题

django - RabbitMQ 和 Django-Celery 运行时出现问题 : Target Machine actively refused connection

python - 如何在不设置索引的情况下旋转数据框?

python - ORM 排序与模型 "Meta"排序 - Django 1.11

python - django 2外键从一个模型到另一个模型

python - Snow Leopard 上的 MySQL_Python