2011-01-04 1 views
2

J'ai un petit problème, et c'est ainsi que je peux sérialiser une requête django avec defer? J'ai ce modèle:Sérialiser en django avec un ensemble de requêtes qui contient defer

class Evento(models.Model): 
    nome=models.CharField(max_length=100) 
    descricao=models.CharField(max_length=200,null=True) 
    data_inicio= models.DateTimeField() 
    data_fim= models.DateTimeField() 
    preco=models.DecimalField(max_digits=6,decimal_places=2) 
    consumiveis= models.CharField(max_length=5) 
    dress_code= models.CharField(max_length=6) 
    guest_list=models.CharField(max_length=15) 

    local = models.ForeignKey(Local) 
    user= models.ManyToManyField(User,null=True,blank=True) 

    def __unicode__(self): 
     return unicode('%s %s'%(self.nome,self.descricao)) 

ma requête est la suivante:

eventos_totais = Evento.objects.defer("user").filter(data_inicio__gte=default_inicio, 
           data_fim__lte=default_fim) 

il fonctionne très bien je pense (comment puis-je vérifier si la requête a reporter realy l'utilisateur sur le terrain), mais quand je fais :

json_serializer = serializers.get_serializer("json")() 
eventos_totais = json_serializer.serialize(eventos_totais, 
              ensure_ascii=False, 
              use_natural_keys=True) 

il folow toujours les clés naturelles pour l'utilisateur et local, j'ai besoin des clés naturelles pour cette requête en raison des champs locaux. Mais je n'ai pas besoin de l'utilisateur sur le terrain.

+0

, j'ai une solution, et je pense que cela correspond faire: eventos_totais = Evento.objects.defer ("utilisateur"). filter (data_inicio__gte = default_inicio, data_fim__lte = default_fim) et eux le sérialiseur: eventos_totais = json_serializer.serialize (eventos_totais, fields = ('nome' , 'descricao', 'data_inicio', 'data_fim', 'preco', 'consommatif est ',' dress_code ',' guest_list ',' local '), Ensure_ascii = Faux, use_natural_keys = Vrai) Si quelqu'un a une meilleure solution s'il vous plaît faites le moi savoir. –

Répondre

0

Pour sérialiser un sous-ensemble de vos modèles champs, vous devez spécifier les champs arguments au serializers.serialize()

from django.core import serializers 
data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))

Ref: Django Docs

Questions connexes