django - 查询字符串、urls.py 和视图中所需的更改
问题描述
一个基本的 django 问题,但难倒我。
我有一个端点的现有视图。 http://localhost:8001/v1/subject - 从主题模型返回所有主题。
我想提供一个新的端点... http://localhost:8001/v1/subject?owner_ids=60,61,62
“urls.py”定义中所需的更改是什么?
''' def query_set ''' views/subject.py 中的方法,
我已经添加了该方法,但它没有按预期工作。
这是 urls.py 的定义,需要进行任何更改以适应查询字符串吗?
router.register(r'subjects', views.SubjectsViewSet)
我应该做这样的事情吗?
url(r'^v1/subjects/',
views.SubjectViewSet.as_view({'get': 'list'}))
另外,这是我的views/subjects.py 文件... def get_queryset 中的逻辑可能有效,但是如何连接urls.py 条目以便查询字符串localhost:8001/v1/subjects?owner_ids=60,61,62与常规 localhost:8001/v1/subjects 一起提供?
class SubjectViewSet(Subject.get_viewset()):
pagination_class = SubjectPagination
def get_queryset(self, *args, **kwargs):
owner_id_list =
self.request.GET['owner_ids'].split(',')
owner_id_list_integer = []
for i in owner_id_list:
owner_id_list_integer.append(int(i))
queryset = Subject.objects.all()
if owner_id_list is None:
return None
else:
return queryset.filter(organization__in=owner_id_list)
SubjectUserRoleViewSet = Subject.get_by_user_role_viewset(
SubjectViewSet, GroupRoleMap, Role)
解决方案
请试试这个方法。
def get_queryset(self, *args, **kwargs):
splited = self.request.GET['owner_ids'].split(',')
filtered_nums = list(filter(None, splited))
try:
get_nums = list(map(int, filtered_nums))
except ValueError as exc:
return Subject.objects.none()
else:
return Subject.objects.filter(organization__in=get_nums)
我希望,我没有错误。
推荐阅读
- css - 有没有办法覆盖文档侧边栏的 CSS(使用 Docusaurus)以使其更窄/更靠左?
- r - 合并长格式数据中的用户名和时间
- python - Python,random.randint 不打印出来
- python - to_categorical 和错误 ValueError: zero-size array to reduction operation maximum which has no identity
- swift - iOS | SwiftUI | 通过 ContentView 在 TimerView 和 TaskView 之间交换项目的不良结果,@State 未提供结果
- gtk3 - 使用 Glade 和 Python 的 GTK3 背景图像
- java - 使用 JSch 登录后从交互式菜单中选择
- angular - 在离子项目中必须混入哪些文件/文件夹
- java - 带有 Spring Kafka 和 Avro 的模式注册表
- javascript - 删除事件侦听器未按预期工作