django-qmethod is een Django app voor het eenvoudig bepalen van operaties op verzamelingen van Django modellen (dat is, QuerySets en managers).
Op een dag, ik hoop dat zoiets als dit is opgenomen in Django kern.
Gebruik
Basic gebruik is als volgt:
import cPickle als augurk
van django.db import modellen
van djqmethod import manager, querymethod
klasse Group (models.Model):
& Nbsp; pas
class Persoon (models.Model):
& Nbsp;. Genders = dict (m = 'Man', f = 'Vrouw', u = 'Unspecified') artikelen ()
& Nbsp; groep = models.ForeignKey (Group, related_name = 'people')
& Nbsp; geslacht = models.CharField (max_length = 1, keuzes = geslachten)
& Nbsp; leeftijd = models.PositiveIntegerField ()
& Nbsp; # Let op: u moet een expliciete manager hier te creëren.
& Nbsp; objecten = Manager ()
& Nbsp;querymethod
& Nbsp; def minderjarigen (vraag):
& Nbsp; return query.filter (age__lt = 18)
& Nbsp;querymethod
& Nbsp; def volwassenen (vraag):
& Nbsp; return query.filter (age__gte = 18)
# Het `minderjarigen ()` en `volwassenen ()` zal beschikbaar op de manager te zijn:
beweren isinstance (Person.objects.minors (), models.query.QuerySet)
# Ze zullen beschikbaar in de volgende QuerySets zijn:
beweren isinstance (Person.objects.filter (geslacht = "m"). minderjarigen (),
& Nbsp; models.query.QuerySet)
# Ze zullen ook beschikbaar op relaties zijn, als ze werden gemengd in de
# Default manager voor dat model:
groep = Group.objects.all () [0]
beweren isinstance (group.people.minors (), models.query.QuerySet)
# De geproduceerde QuerySets zijn totaal augurk-safe:
beweren isinstance (pickle.loads (pickle.dumps (Person.objects.minors ())),
& Nbsp; models.query.QuerySet)
Een test project is gelegen in test / voorbeeld /; Raadpleeg deze voor een meer uitgebreide voorbeeld.
installatie
pip django-qmethod installeren
Eisen
- Python
- Django
Reacties niet gevonden