#添加额外的Manager方法
增加额外的manager方法是为模块添加表级方法的首选办法。例如,我们为Book模型定义了一个title_count()方法,它需要一个关键字,返回这个关键字的数量。
from django.db import models
class BookManager(models.Manager)
def title_count(self,keyword):
return self.filter(title__iconations=keyword).count()
class Book(models.Model):
...
objects = BookManager()
有了这个manager,我们可以:
Book.objects.title_count('django')
Book.objects.title_count('python')
#重写初始Manager Queryset
manager的基本QuerSet返回系统中的所有对象。例如,"Book.object.all()"返回数据库中的所有书本。我们可以通过覆盖Manager.get_queryset()方法来重写manage的基本QuerySet。使get_queryset()按照你的要求返回一个QuerySet
from django.db import models
class DahlBookManager(models.Manager):
def get_queryset(self):
return super(DahlBookManager, self).get_queryset().filter(author='ZJF')
class Book(models.Model):
...
dahl_objects = DahlBookManager()