Django 将具有外键的对象序列化为json

Django 将具有外键的对象序列化为json,django,Django,这是在Django: data = [] data += serializers.serialize("json", conversation_deal) data += serializers.serialize("json", deal_statuses) dat = serializers.serialize("json", data) return HttpResponse(dat) 我想节省一次到webservice的往返行程,并将两个json合并为一个。 我尝试将每个对象序列化为j

这是在Django:

data = []
data += serializers.serialize("json", conversation_deal)
data += serializers.serialize("json", deal_statuses)
dat = serializers.serialize("json", data)
return HttpResponse(dat)
我想节省一次到webservice的往返行程,并将两个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)
这就是对话交易的建模方式:

class Conversation_Deal(models.Model):
    conversation        = models.ForeignKey('Conversation')
    deal                = models.ForeignKey('Deal')
    status              = models.ForeignKey(DealStatus, null=True, blank=True)
我发现了一些与继承类相关的东西,指出了为什么……尽管我没有继承,但在我的案例中,同样的过程也起作用。希望这对其他人有帮助。我很快会将此作为答案发布。

我找到了解决方案

从字面上说,自从对话开始,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')

希望这对其他人有帮助。

如果您显示您得到的异常(和回溯),您将得到更好的帮助。您所说的“失败”是什么意思?序列化,还是对Web服务的调用?如果是后者,你需要提供更多的服务信息;可能是因为它不支持您试图拨打的电话。@Kave:这不是一个实际的例外,当然也不是一个完整的回溯。说真的,更多的实际信息会有所帮助。对不起,我对这个很陌生。我正在通过jQuery调用我的服务器。而且似乎任何例外都被吞并了。我正在调试模式下使用Aptana Studio。在
dat=serializers.serialize(“json”,data)
之后,我所能想到的就是它抛出了一个异常。我想知道我是否能以某种方式得到完整的回溯(尝试手动访问视图的url。在此之前,请确保django设置中的DEBUG=True。将有完整的回溯。