ind*_*nci 1 django python-3.x django-rest-framework
我正在尝试从数组中获取结果,如下所述:https : //docs.djangoproject.com/en/dev/ref/models/querysets/#in
http://127.0.0.1:8000/blogs?years=['2018', '2019']
http://127.0.0.1:8000/blogs?years=[2018, 2019]
Run Code Online (Sandbox Code Playgroud)
事实证明 ['2018', '2019'] 不是我得到的年份,即使它们在视觉上看起来完全一样。
我什至尝试使用 getlist 作为解释here how to get multiple results using same query params django这确实产生了所需的结果
def get_queryset(self):
years = self.request.query_params.get('years')
return self.queryset.filter(year__in=years)
Run Code Online (Sandbox Code Playgroud)
关于我在这里做错了什么的任何线索?
我尝试了所有选项它都不起作用,而我在下面的语句中输入它工作得很好
def get_queryset(self):
return self.queryset.filter(year__in=['2018', '2019'])
Run Code Online (Sandbox Code Playgroud)
小智 7
我不相信这种方式会奏效。当您在查询字符串中传递值时,我猜 Django 将作为字符串接收。
- 编辑 -
上面的答案行不通,需要多加几年,我得到了解决方案,127.0.0.1:8000/blogs?years=2018&years=2019并且
years = self.request.query_params.getlist('years', '')
Run Code Online (Sandbox Code Playgroud)
将其转换为列表。
– @indavinci
小智 6
我认为解决这个问题的更好、更干净的方法是在查询参数中将字符串作为逗号分隔值传递,然后在 Django 视图中将它们分开。
网址:
http://127.0.0.1:8000/blogs?years=2018,2019
Run Code Online (Sandbox Code Playgroud)
您的看法:
def get_queryset(self):
years = self.request.query_params.get('years').split(',')
return self.queryset.filter(year__in=years)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2731 次 |
| 最近记录: |