2011-01-04 1 views
2

У меня есть небольшая проблема, и вот как можно сериализовать django-запрос с отсрочкой? У меня есть эта модель:Сериализовать в django с набором запросов, который содержит 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)) 

мой запрос состоит в следующем:

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

она отлично работает я думаю, что (? Как я могу проверить, если запрос был действительно перенести пользователя поля), но когда я делаю :

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

всегда Folow естественные ключи для пользователя и местного, мне нужно естественные ключи для этого запроса из-за полей местных. Но мне не нужен полевой пользователь.

+0

Таким образом, я получил одно решение, и я думаю, что он подходит : eventos_totais = Evento.objects.defer («пользователь»). filter (data_inicio__gte = default_inicio, data_fim__lte = default_fim) и их сериализатор: eventos_totais = json_serializer.serialize (eventos_totais, fields = ('nome' , 'Descrição', 'data_inicio', 'data_fim', 'PRECO', 'consumive is ',' dress_code ',' guest_list ',' local '), secure_ascii = False, use_natural_keys = True) Если у кого-то есть лучшее решение, пожалуйста, дайте мне знать. –

ответ

0

Для сериализации подмножество ваших полей моделей, необходимо указать полей аргумент в serializers.serialize()

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

Ref: Django Docs