Bei Verwendung klassenbasierter generischer Sichten in Django bedeutet das Attribut queryset
, dass die Objektgruppe, auf die die Ansicht angewendet wird, "eingeschränkt" wird, richtig?Django: versuchen, zu verstehen, wie das Attribut querieset in klassenbasierten generischen Ansichten funktioniert
Wenn queryset angegeben wird, wird dieses queryset als Quelle von Objekten verwendet. (Django's get_object())
Modell:
from django.db import models
class Person(models.Model):
full_name = models.CharField(max_length=30)
is_active = False
Ausblick:
from django.views.generic import DetailView
from books.models import Person
class PersonDetail(DetailView):
queryset = Person.objects.filter(is_active=True)
Die queryset
oben stellt sicher, dass Objekte nur zu prüfen, mit is_active=true
.
Aber wie funktioniert das intern?
Zum Beispiel: Fügt Django eine SQL-Bedingung AND is_active=TRUE
an jede Abfrage in der Ansicht?
Ok das letzte Beispiel scheint ziemlich dumm, aber ich hoffe, Sie bekommen die Idee von meiner Frage. Vielen Dank.
"* Fügt Django eine SQL-Bedingung AND is_active = TRUE zu jeder Abfrage in der Ansicht *". Ja genau. Dann wendet es [zusätzliche Filter an, um auf ein bestimmtes Objekt einzugrenzen] (https://github.com/django/django/blob/master/django/views/generic/detail.py#L38). – solarissmoke
@solarissmoke danke für deinen Kommentar. Wenn du eine Antwort formulierst, werde ich es gerne annehmen :) – gglasses