All work and no play makes Jack a dull boy

terça-feira, 2 de setembro de 2014

Ordenando no Django a partir de uma property

Calma, não enlouqueci!
Todos sabemos que ao atribuir uma referência no order_by do ORM do Django, na verdade, ele irá gerar uma query com o campo pedido na cláusula ORDER BY do Mysql, por exemplo.

Apesar de, na maioria das vezes, as properties envolverem alguma query, não chega a ser um coluna no banco de dados. Então como ordenar por ela?

E lá vamos nós:
class Autor(models.Model):
    primeiro_nome = models.CharField(max_length=30)
    sobrenome = models.CharField(max_length=40)
    email = models.EmailField(blank=True, verbose_name='e-mail')

    def _nome_completo(self):
        return u'%s %s' % (self. primeiro_nome, self. sobrenome)    nome_completo = property(_nome_completo)
    def __unicode__(self):
        return self.nome_completo

sorted(Autor.objects.all(), key=lambda a: a.nome_completo)
Seja feliz!

Fonte

Nenhum comentário:

Postar um comentário