ree*_*oid 7 django django-models django-managers
不确定区别是什么.似乎所有管理器都有一堆与模型相关的功能.但是这些功能也可以放在模型中......
Django文档描述了Manager如下,
Manager是为Django模型提供数据库查询操作的接口.
那么管理器还有什么根本不同于这个简单的抽象?
或者更好的问题:在模型与经理中应该定义哪些方法?是否存在实际差异或只是文体差异?
在Django中,模型管理器是模型执行数据库查询的对象.每个Django模型至少有一个管理器,objects您可以创建自己的管理器来更改默认行为.
所以,你的陈述
但是这些功能也可以放在模型中
好吧,不是因为模型依赖于默认管理器来检索查询集.
让我试着用一个例子来解释.让我们说你的应用程序需要一个模型对象来只显示状态为的对象published.现在,MyModel.objects.all()检索所有内容,您必须MyModel.objects.filter(published=True)每次都指定过滤器.
现在,您可以覆盖此默认行为.
class MyModelAdmin(admin.ModelAdmin):
def queryset(self, request):
return MyModel.objects.filter(published=True)
Run Code Online (Sandbox Code Playgroud)
我们刚刚做的是覆盖默认管理器的默认行为.
现在,让我们说你想要一切,你可以做类似的事情
class MyModelAdmin(admin.ModelAdmin):
def queryset(self, request):
return MyModel.objects.filter(published=True)
def all_objects(self, request):
return MyModel.objects.all()
Run Code Online (Sandbox Code Playgroud)
在访问所有对象时,就这样做
MyModel.objects.all_objects()
Run Code Online (Sandbox Code Playgroud)
简而言之,管理员在访问模型的查询集方面提供了很大的灵活性.
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |