У меня есть приложение django rest Framework, и я хочу использовать мои параметры url в качестве дополнительной фильтрации для набора запросов, если они указаны в url.
Прямо сейчас я пытаюсь получить параметры из URL-адреса, и они не захватываются, а затем не применяют параметры в качестве фильтра.
может кто-нибудь помочь мне с этим.
urls:
router.register(r'preferences', PreferenceUserViewSet, basename='Preference')
router.register(r'preferences/(?P<namespace>\w+)', PreferenceUserViewSet, basename='Preference-namespace')
router.register(r'preferences/(?P<namespace>\w+)/(?P<path>\w+)', PreferenceUserViewSet, basename='Preference-path')
viewset:
class PreferenceUserViewSet(viewsets.ModelViewSet):
model = Preference
serializer_class = PreferenceSerializer
def get_permissions(self):
if self.action == 'create' or self.action == 'destroy':
permission_classes = [IsAuthenticated]
else:
permission_classes = [IsAdminUser]
return [permission() for permission in permission_classes]
@permission_classes((IsAuthenticated))
def get_queryset(self):
namespace = self.request.query_params.get('namespace', None)
path = self.request.query_params.get('path', None)
print(namespace)
print(path)
queryset = Preference.objects.filter(user_id=1)
if path is not None:
queryset = Preference.objects.filter(user_id=1, namespace=namespace)
if namespace is not None:
queryset = Preference.objects.filter(user_id=1, namespace=namespace, path=path)
return queryset
Так что я хочу либо просто отфильтровать на основеuser_id, если нет переданного пространства имен или пути. Я хочу отфильтровать на основе user_id и пространства имен, если передано пространство имен, а путь не указан. Я хочу отфильтровать на основе user_id, пространства имен и пути, если все три значения переданы вЯ посмотрел все документы, но не смог понять.