我正在使用project来了解Django Rest Framework,但遇到了这个奇怪的代码(对我而言)。
class AuthorManager(models.Manager):
pass
class Author(models.Model):
objects = AuthorManager()
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
def __unicode__(self):
return '{} {}'.format(self.first_name, self.last_name)
我不明白objects = AuthorManager()
的目的,而且,为什么我们使用的管理员只是做pass
。有什么理由吗?
答案 0 :(得分:0)
来自Django的文档:
Manager是为Django模型提供数据库查询操作的接口。对于Django应用程序中的每个模型,至少存在一个Manager。
在这里,给定的模型管理器 AuthorManager 没有提供任何方法,因此它没有任何意义。 将来,如果我们想要任何方法,我们可以包括。比如,计算一下作者的名字是' qarthandso':
class AuthorManager(models.Manager):
def count_qarthandso(self):
super(AuthorManager, self).get_queryset().filter(first_name='qarthandso').count()
以及您可以使用的任何地方:
Author.objects.count_qarthandso()