我看过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()
只会返回 colour
为 blue
的对象。请注意,这是一种非常糟糕的过滤模型的方法!
如果他们要修改经理通常返回的 QuerySet
或者如果您需要添加“表”,通常需要修改 Manager
接口(interface)级别查询(而不是常规的 Django“行”级别)。 documentation for managers 非常完整,包含几个示例。
关于python - Django 中的 "Manager"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14689237/