2016-10-17 3 views
0

휴식 장고에서 처리되지 않습니다 내 views.py :URL 쿼리 매개 변수는 다음

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.py : mywebsite/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에서 줄 단위로 디버깅하고 매개 변수에 대해 설정된 vakue가 무엇인지 확인하는 방법이 있습니까? 아니면 더 나은 방법을 제안하십시오. 이 책자가 도움이 될 것입니다. –

+0

잘 모르겠지만 url_id를 얻은 후에 할 수 있습니까? url_id = int (url_id) –