django-qmethod è un app Django per definire facilmente operazioni su collezioni di modelli di Django (cioè, querysets e Dirigenti).
Un giorno, spero che qualcosa di simile è incluso nel nucleo Django.
Utilizzo
Utilizzo base è il seguente:
cPickle importazione come sottaceto
da modelli di importazione django.db
da djqmethod import Manager, QueryMethod
Classe Group (models.Model):
& Nbsp; passaggio
classe Persona (models.Model):
& Nbsp;. GENDERS = dict (m = 'Male', f = 'femminile', u = 'non specificata') articoli ()
& Nbsp; group = models.ForeignKey (Group, related_name = 'persone')
& Nbsp; genere = models.CharField (max_length = 1, scelte = GENDERS)
& Nbsp; età = models.PositiveIntegerField ()
& Nbsp; # Nota: è necessario creare un gestore esplicito qui.
& Nbsp; oggetti = Manager ()
& Nbsp;querymethod
& nbsp; def minori (query):
& Nbsp; ritorno query.filter (age__lt = 18)
& Nbsp;querymethod
& nbsp; def adulti (query):
& Nbsp; ritorno query.filter (age__gte = 18)
# I `minori ()` e `adulti ()` metodi saranno disponibili sul gestore:
affermare isinstance (Person.objects.minors (), models.query.QuerySet)
# Saranno disponibili on querysets successive:
affermare isinstance (Person.objects.filter (genere = 'm'). minorenni (),
& Nbsp; models.query.QuerySet)
# Saranno anche essere disponibili sui rapporti, se fossero mescolati al
# Gestore predefinito per il modello:
group = Group.objects.all () [0]
affermare isinstance (group.people.minors (), models.query.QuerySet)
# I querysets prodotti sono totalmente sottaceto-safe:
affermare isinstance (pickle.loads (pickle.dumps (Person.objects.minors ())),
& Nbsp; models.query.QuerySet)
Un progetto di test si trova in test / esempio /; consultare questo per un esempio più completo.
Installazione
Pip installare django-qmethod
Requisiti :
- Python
- Django
I commenti non trovato