Django4 中文入门教程 Django4.0 管理器-管理器调用自定义QuerySet方法

2024-02-25 开发教程 Django4 中文入门教程 匿名 3

因为大部分的标准 ​QuerySet ​方法能直接从 ​Manager ​访问,这个实例仅适用于你在自定义 ​QuerySet ​中定义了额外方法,且在 ​Manager ​中实现了它们:

class PersonQuerySet(models.QuerySet):
def authors(self):
return self.filter(role='A')
def editors(self):
return self.filter(role='E')
class PersonManager(models.Manager):
def get_queryset(self):
return PersonQuerySet(self.model, using=self._db)
def authors(self):
return self.get_queryset().authors()
def editors(self):
return self.get_queryset().editors()
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
role = models.CharField(max_length=1, choices=[('A', _('Author')), ('E', _('Editor'))])
people = PersonManager()

本例允许你从管理器 ​Person.people​ 直接调用 ​authors()​ 和 ​editors()​。