2017-09-28 3 views
1

私は、POSTリクエストからデータを受け取り、関連するデータを出力するクラスベースのDjango REST APIを構築しようとしています。POSTリクエストの情報を必要とするDJANGO RESTをセットアップするにはどうすればよいですか?

私は、ユーザーがPOSTリクエスト(すなわちカリフォルニア州)を介して状態を供給します

State   Building 
California Golden Gate Bridge 
New York  Empire State 
California TransAmerica 
New York  Brooklyn Bridge 

、APIは(すなわち、ゴールデンゲートブリッジ、トランス)

適切な建物を返すべきDBに建物のリストを持っています

私は、クラスがどのようにrequest.data ['state_id']に取り込まれているかを理解するのに苦労していると思います。 APIViewを使用する必要がありますか?非常に多くの質問!

これまでのところ、私はこれはこれは私のurl.pyである私のserializer.pyに

class BuildingSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = BuildingRule 
     fields = ('building_name',) 

ある

class BuildingViewSet(viewsets.ModelViewSet): 
    queryset = BuildingRule.objects.values('building_name').distinct() 
    serializer_class = BuildingSerializer 

    def post(self, request, *args, **kwargs): 
     queryset = BuildingRule.objects.filter(state_name=request.data['state_id']) 
     return Response(queryset.values_list('building_name', flat=True)) 

私view.pyでこれを持っている:

router.register(r'buildings', views.BuildingsViewSet, base_name='Building') 
+0

ビューセットでcreateメソッドをオーバーライドしてください。このリンクに従ってください。https://stackoverflow.com/questions/40999386/custom-function-which-performs-create-and-update-on-drf-modelviewset – amrit

+1

オーバーライドビューセット内のメソッドを作成するのが正しい方法ではありません。 DRFとシリアライザでは、私の答えに記述されているようにFieldの 'required'属性だけを使用します。 –

答えて

1

あなたはDjangoの残りのフレームワークシリアライザ:http://www.django-rest-framework.org/tutorial/1-serialization/をチェックアウトしてdrfの基本的な知識と使い方を調べる必要があります。

質問に対する回答は、「シリアライザクラスの作成」にあります。

関連する問題