【发布时间】:2011-01-04 11:35:03
【问题描述】:
我有一点小问题,那就是如何使用 defer 序列化 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)
它始终遵循用户和本地的自然键,由于本地字段,我需要此查询的自然键。但我不需要外业用户。
【问题讨论】:
-
所以,我有一个解决方案,我认为它适合做:eventos_totais = Evento.objects.defer("user").filter(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','consumiveis','dress_code','guest_list','local'), ensure_ascii =False,use_natural_keys=True) 如果有人有更好的解决方案,请告诉我。
标签: django django-models django-queryset