Django REST Framework: Using same queryset from two different URLs -
Django REST Framework: Using same queryset from two different URLs -
i have 2 modelviewsets groups , memberships:
class groupviewset(viewsets.modelviewset): queryset = group.objects.all() serializer_class = groupserializer permission_classes = (permissions.isauthenticatedorreadonly, isgroupownerorsuperuser,) ... class membershipviewset(viewsets.modelviewset): queryset = membership.objects.all() serializer_class = membershipserializer permission_classes = (permissions.isauthenticatedorreadonly, ismemberorsuperuser,) def get_queryset(self): ... # stuff including filter query grouping group_id = self.request.query_params.get('group_id', none) ... homecoming queryset in membershipviewset, get_queryset allows query filter group_id, members associated particular group.
in groupviewset, want allow filtering groups @ url /groups/{pk}/memberships:
@link() def memberships(self, request, pk=none): ... however don't want break dry replicating get_queryset code membershipsviewset. below code, though doesn't work:
@link() def memberships(self, request, pk=none): grouping = group.objects.get(pk=pk) # next doesn't work because query_params immutable self.request.query_params.update({'group_id':pk}) mems = membershipviewset.get_queryset(self) mems = membershipserializer(mems, many=true, context={'request': request}) homecoming response(mems.data) so question is: how redirect or @ to the lowest degree re-use code query should homecoming identical results 2 different drf urls?
i don't know if solves problem, replace line
# next doesn't work because query_params immutable self.request.query_params.update({'group_id':pk}) with
self.kwargs['group_id'] = pk and in get_queryset can take grouping id same way.
group_id = self.kwargs.get('group_id', none) this how it, , works me. hope helps.
django django-rest-framework
Comments
Post a Comment