Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django获得对经理的询问_Django - Fatal编程技术网

在Django获得对经理的询问

在Django获得对经理的询问,django,Django,据我所知,我们的数据库是由模型管理员提供的,对吗 e、 g.queryset=Model.objects.all() 但有时,我看到一些代码看起来几乎一样,但有点不同 post=self.get\u queryset() 它还获取数据库,但不由管理器获取 manager和get_queryset()获取数据库与它们的用法有什么区别?下面的示例帮助您了解什么是ModelManager和get_queryset: class PersonQuerySet(models.QuerySet):

据我所知,我们的数据库是由模型管理员提供的,对吗

e、 g.
queryset=Model.objects.all()

但有时,我看到一些代码看起来几乎一样,但有点不同

post=self.get\u queryset()

它还获取数据库,但不由管理器获取


manager和get_queryset()获取数据库与它们的用法有什么区别?

下面的示例帮助您了解什么是
ModelManager
get_queryset

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()
每个模型至少有一个模型管理器,
get\u queryset
是模型管理器库
queryset
。 当您使用
Person.objects.all()
时,它将返回来自
Person
模型的所有结果,而不是过滤器或其他任何内容

在上面的示例中,我们使用一个名为
PersonManager
的自定义模型管理器,其中覆盖
get\u queryset
。 首先,我们使用
role='A'
应用
authors
过滤器。 其次,我们使用
role='E'
应用
编辑器
过滤器


所以,现在如果我们使用
Person.people.all()
它将只返回
作者
。看这里,我们使用
all()
,但它只返回
作者
。因为我们覆盖了默认的模型管理器查询集。

您是在谈论基于类的视图吗?