Django基本经理

时间:2016-06-21 02:27:39

标签: python django

我正在使用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。有什么理由吗?

1 个答案:

答案 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()