2016-10-17 52 views
0

這裏是我的views.py網址查詢參數不是在Django處理休息

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") 

網址具有默認值但不起作用。請幫忙。

+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部分,您返回字符串,但由於字符串不是查詢集,所以您也無法這樣做。

+0

對不起,返回ID只是一個錯字,而檢查,但結果是同樣的{細節:找不到}。但是,當我硬編碼相同的價值在過濾器中的作品。我需要一種方法來訪問url中的鍵值對樣式參數。 –

+0

有沒有一種方法可以在django中逐行調試,並查看參數設置的vakue是什麼?或者建議一個更好的方法。這將是有益的。 –

+0

我不確定,但可以在獲取url_id後執行此操作嗎? url_id = int(url_id) –

0

根據官方文檔(http://www.django-rest-framework.org/api-guide/filtering/#filtering-against-query-parameters

我覺得你的代碼是不工作,因爲你正在使用:

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

相反的:

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

在文檔中,你可以找到那get_queryset函數剛剛收到self param,你必須刪除request param。

+0

嘗試url_id = self.request.get('id',None)無法正常工作。 –