默认管理器:
例 Book.objects.filter(name='朝花夕拾')
自定义管理器:
books = models.Manager()
Book.books.filter(name='朝花夕拾')
自定义管理增加额外的方法:
class BookManager(models.Manager)
def get_normal_word(self):
return self.get_queryset().filter(name='平凡的世界')
# 蓝色字为修改自定义的查询集
def get_queryset(self):
return super().get_query().filter(id__gt=1)
## Book.mybooks.all() # 只能返回id大于1的查询集
class Book(models.Model)
...
mybooks = BookManager()
---------------------------------------------------------------------------------------------------------
查找平凡的世界的时候:
Book.mybooks.get_normal_word()
---------------------------------------------------------------------------------------------------------
使用多个manager:
class MaleManager(models.Manager):
def get_queryset(self):
return super(MaleManager, self).get_queryset().filter(sex='M')
class FemaleManager(models.Manager):
def get_queryset(self):
return super(FemaleManager, self).get_queryset().filter(sex='F')
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
sex = models.CharField(max_length=1,
choices=(
('M', 'Male'),
('F', 'Female')
)
)
people = models.Manager()
men = MaleManager()
women = FemaleManager()