2016-10-17 49 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)无法正常工作。 –