2016-10-17 12 views
0

を休まジャンゴで処理されていないです私のviews.pyURLクエリパラメータは、ここで

class my4appCompanyData(generics.ListAPIView): 
    serializer_class = my4appSerializer 

    def get_queryset(self,request): 
     """Optionally restricts the returned data to ofa company, 
     by filtering against a `id` query parameter in the URL. """ 
     queryset = companies_csrhub.objects.all() 
     #url_id = self.request.query_params.get('id', None) 
     url_id = request.GET.get('id', None) 
     if id is not None: 
      queryset = queryset.filter(id=url_id) 
     elif id is ALL: 
      queryset = companies_csrhub.objects.all() 
     else: 
      queryset = "Error data not found" 
     return queryset 

そして、私のurls.pymywebsite/api/my4app/company/?id=100227

計画複数のフィルタを追加する:チェックに使用

router.register(r'api/my4app/company/$', views.my4appCompanyData.as_view(),base_name="company") 

URLデフォルト値では動作しません。助けてください。

+0

あなたはそのメソッドの途中に戻ります。 –

答えて

0
class my4appCompanyData(generics.ListAPIView): 
    serializer_class = my4appSerializer 

    def get_queryset(self,request): 
     """Optionally restricts the returned data to ofa company, 
     by filtering against a `id` query parameter in the URL. """ 
     queryset = companies_csrhub.objects.all() 
     url_id = request.query_params.get('id', None) 
     if id is not None: 
      queryset = queryset.filter(id=url_id) 
     elif id is ALL: 
      queryset = companies_csrhub.objects.all() 
     else: 
      queryset = [] 
     return queryset 

idがクエリーセットではないため、リターンIDを削除すると、エラーが発生します。また、if文のelse部分ではstringを返すが、stringはquerysetではないので、これを行うことはできない。

url_id = request.query_params.get('id', None) 

の代わりに::

url_id = self.request.query_params.get('id', None) 

ドキュメントで見つけることができる

+0

残念ながら、返品IDはチェックしている間の誤字だけでしたが、その結果も同じです(詳細は見つかりません)。しかし、私はハードコードのフィルタで同じ値を動作します。私はURLからキーの値のペアスタイルのパラメータにアクセスする方法が必要です。 –

+0

djangoの行ごとにデバッグする方法はありますか?パラメータの設定は何ですか?または、より良い方法を提案する。これは参考になります。 –

+0

私は確信していませんが、あなたはurl_idを取得した後でそれを行うことができますか? url_id = int(url_id) –

0

よる公式ドキュメント

http://www.django-rest-framework.org/api-guide/filtering/#filtering-against-query-parameters

は、私はあなたが使用しているので、あなたのコードが動作していないと思いますget_queryset関数がちょうど selfのパラメータを受け取った場合は、 request paramを削除する必要があります。

+0

試したurl_id = self.request.get( 'id'、None)は動作しません。 –

関連する問題