1
我读的Django docs和这两个类看起来相似,Django的模型管理器或Django的查询集
这里是Django文档样本:
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()
在示例代码中,你可以看到代码PersonQuerySet
可以移动到PersonManager
(或移动管理器查询设置) - 我的观点是我可以合并一个到另一个没有任何问题)
所以管理器和queryset有什么区别?他们有不同的用例吗?或者我应该简单地使用其中一个而忽略另一个的存在?