django-qmethod é um app Django para definir facilmente operações em coleções de modelos do Django (isto é, QuerySets e Gestores).
Um dia, espero que algo como isso está incluído no Django núcleo.
Uso
Utilização básica é a seguinte:
cPickle importação como pickle
a partir de modelos de importação django.db
de djqmethod gerente de importação, QueryMethod
Grupo de classe (models.Model):
& Nbsp; passe
classe Pessoa (models.Model):
& Nbsp;. GÊNEROS = dict (m = 'masculino', f = "feminino", u = 'não especificado') itens ()
& Nbsp; group = models.ForeignKey (Group, related_name = 'povo')
& Nbsp; gender = models.CharField (max_length = 1, escolhas = sexos)
& Nbsp; de idade = models.PositiveIntegerField ()
& Nbsp; # Nota: você precisa criar um gestor explícito aqui.
& Nbsp; objetos = Manager ()
& Nbsp;querymethod
& nbsp; def menores (query):
& Nbsp; query.filter retorno (age__lt = 18)
& Nbsp;querymethod
& nbsp; def adultos (consulta):
& Nbsp; retorno query.filter (age__gte = 18)
# O `menores ()` e `adultos ()` métodos estarão disponíveis no gerenciador:
afirmar isinstance (Person.objects.minors (), models.query.QuerySet)
# Eles estarão disponíveis no querysets subseqüentes:
afirmar isinstance (Person.objects.filter (gender = 'm'). menores (),
& Nbsp; models.query.QuerySet)
# Elas também vão estar disponíveis sobre as relações, se eles foram misturados ao
# Gerenciador padrão para esse modelo:
group = Group.objects.all () [0]
afirmar isinstance (group.people.minors (), models.query.QuerySet)
# Os QuerySets produzidos são totalmente pickle-safe:
afirmar isinstance (pickle.loads (pickle.dumps (Person.objects.minors ())),
& Nbsp; models.query.QuerySet)
Um projeto de teste está localizado em teste / example /; consultá-las para um exemplo mais abrangente.
Instalação
pip instalar django-qmethod
Requisitos :
- Python
- Django
Comentários não encontrado