1

私はDjangoの残りのチュートリアルで働いていると私は、例えば、すべての応答が唯一のモデルフィールドが復帰していることを参照してください。ジャンゴ残り変更JSONレスポンスデザイン

[ 
    { 
    "id": 1, 
    "title": "", 
    "code": "foo = \"bar\"\n", 
    "linenos": false, 
    "language": "python", 
    "style": "friendly" 
    }] 

私の質問は、私が設計することができますどのように応答:たとえば、

users:[ 
    { 
     "id": 1, 
     "title": "", 
     "code": "foo = \"bar\"\n", 
     "linenos": false, 
     "language": "python", 
     "style": "friendly" 
     }] 
+0

を私はあなたがより記述することができ、問題が何であるかを理解していませんか?前もって感謝します! –

+0

回答ありがとう、私の例は良くないですか? –

+0

投稿した2つのコードサンプルの唯一の違いはほとんど同じです。あなたの問題は何ですか、あなたの望む結果は何ですか?これまで何をしていますか? :D –

答えて

0

あなたが要求したことを行うために変更した次のコードを使用しています。しかし、私はあなたにそうしなければならない非常に正当な理由がない限り、どのように応答が与えられるかを変更しないことを提案します。これは、ModelViewSetsのために将来複数のオブジェクトを作成する際に問題を引き起こし、すべてのlist()メソッドは異なる値を返します。

私は本当に以下のようには好きではありませんが、質問に答えています。さらに、シリアライザをネストされたシリアライザに変更することもできますが、それは別の質問です。

from rest_framework import status 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 
from snippets.models import Snippet 
from snippets.serializers import SnippetSerializer 


@api_view(['GET', 'POST']) 
def snippet_list(request): 
    """ 
    List all snippets, or create a new snippet. 
    """ 
    if request.method == 'GET': 
     snippets = Snippet.objects.all() 
     serializer = SnippetSerializer(snippets, many=True) 
     return Response({'users': serializer.data}) 

    elif request.method == 'POST': 
     # Assuming we have modified the below - we have to hack around it 
     serializer = SnippetSerializer(data=request.data['users']) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response({'users': serializer.data}, status=status.HTTP_201_CREATED) 
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

上記はあなたに以下の応答与える必要があります。

{ 
    "users": [ 
     { 
      "id": 1, 
      "title": "", 
      "code": "foo=\"bar\"\n", 
      "linenos": false, 
      "language": "python", 
      "style": "friendly" 
     }, 
     { 
      "id": 2, 
      "title": "", 
      "code": "print\"hello, world\"\n", 
      "linenos": false, 
      "language": "python", 
      "style": "friendly" 
     } 
    ] 
} 
+0

ありがとうございました! どのようにしてレスポンスを結合できますか?それらの間には関係のない2つのモデルがありますか? たとえば、「ユーザー」と「住所」 –

+0

同じ方法です。異なるシリアライザを持つ別のQuerySetを使用し、別のキー値を使用してシリアライザデータを渡します。 –

関連する問題