这是在Django:
data = []
data += serializers.serialize("json", conversation_deal)
data += serializers.serialize("json", deal_statuses)
dat = serializers.serialize("json", data)
return HttpResponse(dat)
我想保存一次往返网络服务的往返,并将两个jsons合并为一个。 我试图做的是将每个对象序列化为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)
我发现了一些与继承类documentation相关的东西,指出了这一点为什么......即使我不是继承,但同样的过程也适用于我的情况。希望这有助于其他人。我很快就会发布这个答案。
答案 0 :(得分: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')
希望这有助于其他人。