Como retornar json da model ou QuerySet em seu Django ?
Simples… utilizando o módulo DjangoFullSerializers, do WADOFSTUFF.
Link: http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers
Conforme escrito no wiki, este módulo, extende as funcionalidades do Django Built-in Serializer, adicionando 3 novas funcionalidades, inspiradas no RubyOnRails Json Serializer:
- excludes: onde você informa os campos que não serão serializados
- extras: onde você informa outras propriedades da model, que não sejam fields, para serem serializados. Métodos por exemplo.
- relations: onde você informa quais propriedades são listas ou dicionários que devem ter seus itens serializados também.
E isto é muito interessante, pois assim, com esta lib, conseguimos serializar nossa model e suas models relacionadas.
por exemplo
Dadas as models abaixo:
class Pessoa(models.Model):
nome = models.CharField(max_length=50)
pai = models.ForeignKey(self)
quando serializar-mos ela, da seguinte forma ( levando em consideração que seu DjangoFullSerializers ja´está corretamente instalado):
json = serializers.serialize( 'json', Pessoa.objects.all() , indent=4, relations=('pai',) )
o json retornado será o seguinte:
[
{
"pk": 2,
"model": "projeto.Pessoa",
"fields": {
"nome":"...",
"pai": {
"pk": 1,
"model" : "projeto.Pessoa",
"fields": {
"nome" : "..."
}
}
}
}
]
ou seja, serializando o objeto que mandamos, e os objetos relacionados a ele…
Muito bom ! E além de tudo, vai formatado se informado o parametro “indent”, caso não informado, vem flat…







