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有什麼區別?他們有不同的用例嗎?或者我應該簡單地使用其中一個而忽略另一個的存在?