django-qmethod es una aplicación Django para definir fácilmente las operaciones en colecciones de modelos de Django (es decir, QuerySets y Gerentes).
Un día, espero que algo como esto está incluido en el núcleo de Django.
Uso
El uso básico es el siguiente:
cPickle importación como salmuera
a partir de modelos de importación django.db
desde djqmethod Gerente importación, querymethod
clase de grupo (models.Model):
& Nbsp; pase
clase Persona (models.Model):
& Nbsp;. GÉNEROS = dict (m = 'masculino', f = 'Mujer', u = 'sin especificar') artículos ()
& Nbsp; grupo = models.ForeignKey (Grupo, related_name = 'personas')
& Nbsp; de género = models.CharField (max_length = 1, opciones = GÉNEROS)
& Nbsp; edad = models.PositiveIntegerField ()
& Nbsp; # Nota: es necesario crear un gestor explícita aquí.
& Nbsp; objetos = Manager ()
& Nbsp;querymethod
& nbsp; def menores (consulta):
& Nbsp; query.filter retorno (age__lt = 18)
& Nbsp;querymethod
& nbsp; def adultos (consulta):
& Nbsp; retorno query.filter (age__gte = 18)
# Los `menores ()` y `adultos ()` métodos estarán disponibles en el gestor:
afirmar isinstance (Person.objects.minors (), models.query.QuerySet)
# Estarán disponibles en QuerySets posteriores:
afirmar isinstance (Person.objects.filter (género = 'm'). menores de edad (),
& Nbsp; models.query.QuerySet)
# También estarán disponibles en las relaciones, si es que se mezclaron en la
# Gestor por defecto para ese modelo:
grupo = Group.objects.all () [0]
afirmar isinstance (group.people.minors (), models.query.QuerySet)
# Los QuerySets producidos son totalmente salmuera de fallos:
afirmar isinstance (pickle.loads (pickle.dumps (Person.objects.minors ())),
& Nbsp; models.query.QuerySet)
Un proyecto de prueba se encuentra en prueba / ejemplo /; consultar esto para un ejemplo más completo.
Instalación
PIP instalar django-qmethod
Requisitos :
- Python
- Django
Comentarios que no se encuentran