当在Django中使用基于类的通用视图时,具有queryset
属性意味着“限制”视图将操作的对象集合,对吧?Django:试图了解queryset属性如何在基于类的通用视图中工作
如果提供queryset,则该queryset将用作对象的来源。 (Django's get_object())
型号:
from django.db import models
class Person(models.Model):
full_name = models.CharField(max_length=30)
is_active = False
查看:
from django.views.generic import DetailView
from books.models import Person
class PersonDetail(DetailView):
queryset = Person.objects.filter(is_active=True)
的queryset
上述确保只考虑对象与is_active=true
。
但是,这是如何工作内部?
例如:Django是否将SQL条件AND is_active=TRUE
附加到视图中的每个查询?
确定最后一个例子看起来很愚蠢,但我希望你能明白我的问题。谢谢。
“* Django是否将视图*中的每个查询添加了SQL条件AND is_active = TRUE。对,就是这样。然后它[应用额外的过滤器来缩小到特定的对象](https://github.com/django/django/blob/master/django/views/generic/detail.py#L38)。 – solarissmoke
@solarissmoke感谢您的评论。如果你制定答案,我会很高兴接受它:) – gglasses