【问题标题】:Serialize in django witha query set that contains defer使用包含 defer 的查询集在 django 中序列化
【发布时间】: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


【解决方案1】:

要序列化模型字段的子集,您需要为 serializers.serialize() 指定 fields 参数

从 django.core 导入序列化器
data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))

参考:Django Docs

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2021-11-07
    • 2021-05-29
    • 2015-01-02
    • 2021-12-27
    • 2014-12-19
    相关资源
    最近更新 更多