當在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