2011-01-04 32 views
2

私は少し問題があり、それはどのように遅れてdjangoクエリをシリアル化できますか? 私は、このモデルを持っている:遅延を含むクエリセットでdjangoでシリアライズ

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( "user")。フィルタ(data_inicio__gte = default_inicio、data_fim__lte = default_fim)とそれらのシリアライザ:eventos_totais = json_serializer.serialize(eventos_totais、fields =( 'nome' 、 'descricao'、 'data_inicio'、 'data_fim'、 'preco'、 'consumive' '、' dress_code '、' guest_list '、' local ')、ensure_ascii = False、use_natural_keys = True) もっと良い解決策があれば教えてください。 –

答えて

0

、あなたは(serializers.serializeにフィールド引数を指定する必要があります)

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

は、文献:Django Docs

関連する問題