1

JSONデータをサードパーティアプリケーションに返すdjango 1.4.5でAPIを作成しています。

これはデータを取得するための現在の方法ですが、関連データを JSON で使用できるようにする必要があるため、時間がかかります。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').select_related('series')
     for speaker in speakers:
         data['first_name'] = speaker.first_name
         data['last_name'] = speaker.last_name
         data['series_name'] = speaker.series.name
         data['series_id'] = speaker.series.id
     return JSONResponse(data_dict)

最適化を達成するために、次のように試しました。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').select_related('series')
     data_dict = serializers.serialize("python", speakers)
     return JSONResponse(data_dict)

しかし、JSONで関連データの外部キーを返しますが、関連データを取得できないため役に立ちません。

また、生のSQLを試してからデータをタプルで返しますが、辞書形式が必要です。

これを達成するには助けが必要です。

前もって感謝します。

4

1 に答える 1

0

私があなたなら、次のように使います。

def get_speakers(request)
     speakers = Person.objects.filter(profile__person_type__name='Speaker').values('first_name', 'last_name', 'series__name', 'series__id')
     return JSONResponse(speakers)

django ORM では、フィールドに名前を付けるときにアンダースコア_を 1 つだけ使用します。2 つのアンダースコアには別の使い方があります。あなたの例のシリーズは外部キーであり、フィルタリングして値を取得しながらそのフィールドに到達したい場合は、 like を使用'series__name'して関連レコードの名前フィールドを取得できます。

valuesメソッドの他に、 values_listメソッドがあります。あなたに最適なものを使用できます。

于 2013-11-13T07:24:21.197 に答える