0

これはDjangoにあります:

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

Web サービスへの往復を 1 回節約し、2 つの json を 1 つに結合したいと考えています。私がやろうとしたのは、各オブジェクトをjsonにシリアル化し、それらを配列に追加して、jsonとして再度シリアル化することでした。しかし、それは例外をスローします。

また、2 つの 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 に答える