Un manager è in genere qualcosa di nascosto dai programmatori di django che django utilizza per interfacciarsi tra il codice model
e il back-end del database.
Quando si esegue una query l'ORM Django, lo fa attraverso inviti a
from my_app.models import MyModel
mms = MyModel.objects.all()
In questo caso, la parte objects
della funzione è ciò che viene restituito dal gestore. Se si voleva MyModel per sempre e solo ottenere blue
MyModel
casi (il database potrebbe contenere red
modelli troppo) allora si potrebbe creare un gestore e incidere il vostro modello così
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()
e chiamando
MyModel.blue_objects.all()
sarebbe solo ritorno oggetti con colour
come blue
. Nota, questo è un modo molto povero per filtrare i modelli!
Uno sarebbe di solito necessario modificare un'interfaccia Manager
se avevano intenzione di modificare le QuerySet
s che un manager di solito ritorno o se è necessario aggiungere "tabella" query di livello (invece di regolare il livello di Django "riga"). Il documentation per i gestori è abbastanza completo e contiene diversi esempi.
'Managers' sono un bel classe di Django complesso, se siete nuovi a Programmi Mi piacerebbe attenermi al [tutorial] (https://docs.djangoproject.com/en/dev/intro/tutorial01/) finché non sarai più sicuro del codice. – danodonovan