0

这是在 Django 中:

data = []
data += serializers.serialize("json", conversation_deal)
data += serializers.serialize("json", deal_statuses)
dat = serializers.serialize("json", data)
return HttpResponse(dat)

我想节省一次到 Web 服务的往返行程,并将两个 json 合二为一。我试图做的是将每个对象序列化为 json 并将它们添加到一个数组中并再次将它们序列化为 json。但它会引发异常。

我也尝试将两个python对象放入数组中,全部序列化成json,同样失败。

这通常是怎么做的?

更新:

例外:

str: 'str' object has no attribute '_meta'

更新 2:

我有更多信息,似乎 Django 以某种方式与它序列化对象的方式相关。

以下工作非常好:

deal_statuses = DealStatus.objects.all()        
data = serializers.serialize("json", deal_statuses)
return HttpResponse(data)

但这失败了..

conversation_deal = Conversation_Deal.objects.filter(conversation_id__in=call_id)
data = serializers.serialize("json", conversation_deal)
return HttpResponse(data)

这就是 Conversation_Deal 的建模方式:

class Conversation_Deal(models.Model):
    conversation        = models.ForeignKey('Conversation')
    deal                = models.ForeignKey('Deal')
    status              = models.ForeignKey(DealStatus, null=True, blank=True)

我发现了一些与继承类文档相关的东西,指出了为什么......即使我没有继承,但同样的过程在我的情况下也有效。希望这对其他人有帮助。我会尽快将其发布为答案。

4

1 回答 1

0

我找到了解决方案。

从字面上看,因为 Conversation_Deal 具有 DealStatus 类的外键。它需要在序列化过程中了解它。

all = list(Conversation_Deal.objects.filter(conversation_id__in=call_id)) + list(DealStatus.objects.all())
return HttpResponse(simplejson.dumps(to_json), mimetype='application/json')

希望这对其他人有帮助。

于 2012-07-22T09:04:57.500 回答