Ein Manager ist normalerweise etwas versteckt von Django-Programmierern, die Django verwendet, um zwischen model
Code und dem Datenbank-Backend zu verbinden.
Wenn Sie die django ORM abfragen, tun Sie dies durch Anrufe
from my_app.models import MyModel
mms = MyModel.objects.all()
In diesem Fall wird die objects
Teil der Funktion ist das, was von dem Manager zurückgeführt wird. Wenn Sie MyModel nur jemals blue
MyModel
Instanzen (die Datenbank enthält möglicherweise red
Modelle auch) wollte dann könnte man einen Manager erstellen und hacken Sie Ihr Modell so
class BlueManager(models.Manager):
def get_query_set(self):
return super(BlueManager, self).get_query_set().filter(colour='Blue')
class MyModel(models.Model):
colour = models.CharField(max_length=64)
blue_objects = BlueManager()
und ruft
MyModel.blue_objects.all()
würde nur Rückkehr Objekte mit colour
als blue
. Hinweis, dies ist eine sehr schlechte Möglichkeit, Modelle zu filtern!
Normalerweise würde man eine Manager
Schnittstelle modifizieren müssen, wenn sie die QuerySet
s ändern würde, die ein Manager normalerweise zurückgeben würde oder wenn Sie Abfragen auf "Tabellenebene" hinzufügen müssten (statt regulärer django "Zeilen" Ebene). Die documentation für Manager ist ziemlich vollständig und enthält mehrere Beispiele.
'Managers' ist eine ziemlich komplexe django Klasse, wenn Sie neu in programmi ng Ich bleibe bei der [tutorial] (https://docs.djangoproject.com/en/dev/intro/tutorial01/), bis Sie mehr Vertrauen in Code haben. – danodonovan