2016-07-08 7 views
0

私はDjango 1.9とDjango Rest Framework 3.3を使用しています。着信POSTリクエストはdictまたはlistのいずれかになり、同じAPIエンドポイントに当ります。エンドポイントURLは/api/children/3/classesのようになります。この3は、子供のIDを示します。私の着信POSTリクエストは次のようになりますDjango Rest Framework URLからパラメータを取得し、本体内のパラメータを無視します

:この場合

{ 
    "name": "Mathematics", 
    "teacher": "Mr. Kabbatt", 
    "school": "High School" 
    "child": 2 
} 

私は辞書を与えてくれたが、それはまた、同様に辞書の配列(リスト)することができます。

私は にDjangoの残りのフレームワークを強制するにはどうすればよい

はURLからいずれかを使用POST本体にセットし、childパラメータを無視しますか? ListCreateAPIViewジェネリックを使用しており、get_queryset()メソッドでchildパラメータを取得できました。シリアライザ側では、すべてのフィールドを含むDRFのシンプルなModelSerializerを使用しています。

+0

ビューコードを追加できますか? –

答えて

2

正しく理解している場合は、URLで指定されたパラメータを使用して、リクエスト本体のchildの値を上書きする必要があります。

def post(self, request, *args, **kwargs): 
    # django passes params from url in kwargs 
    # e.g. {id: 3} or {child: 3}, not sure what your url calls it 
    if request.data.__class__ is dict: 
     request.data['child'] = kwargs['id'] 
    elif request.data.__class__ is list: 
     # dunno what your setup looks like here 
     for i in request.data: 
      request.data[i]['child'] = kwargs['id'] 
    self.create(request, *args, **kwargs) 
+0

ありがとう、これは働いた。 –

関連する問題