一个基本的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)
答案 0 :(得分:0)
请尝试这种方式。
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)
我希望我没有记错。