我有一点问题,那就是如何用延迟序列化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)
它始终包含用户和本地的自然键,因为字段是本地的,我需要此查询的自然键。但我不需要现场用户。
答案 0 :(得分:1)
要序列化模型字段的子集,您需要为serializers.serialize()
指定 fields 参数from django.core import serializers data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))
参考:Django Docs