如何在Django中从用户获取多个查询

时间:2018-11-27 09:52:46

标签: django

我想从用户那里获得两个查询项(在本例中为两个州Id),并显示两者的相关值(在本例中为state1和2的城市) 我创建了此视图:

 def get(self,request,State_id1,State_id2):
    cities = city.objects.filter(state__in= [State_id1,State_id2])

但是似乎有问题。如何解决?

1 个答案:

答案 0 :(得分:0)

最好将它们放在URL参数中,我确定您不希望像http://example.org/california/arizona/new-york/...../texas/washington/之类的东西不停地打开。 http://example.org/?states=california,new-york,texas,washington之类的东西会更有意义。在这种情况下,您不必这样做。

def get(self,request,State_id1,State_id2):
    cities = city.objects.filter(state__in= [State_id1,State_id2])

您可以做到,在这种情况下,我继承了APIView,但我不知道您是如何实现的。

class ClassViewName(APIView):
    def get(self,request):
        states = [state for state in self.request.query_params.get('state').split(',')]
        cities = city.objects.filter(state__in= states)

在您的应用程序网址格式中

urlpatterns = [
    path('add-state/', views.ClassViewName.as_view())
]

假设此urls.py文件位于名为“ test”的某个应用中,而在主urls.py文件中,我们拥有

urlpatterns = [
    path('api/test', include('test.urls'))
] 

如果我要达到此终点,我将达到http://example.com/api/test/add-state/?states=california,texas