У меня есть фреймворк Django. остальное приложение. Я хочу передать в двух параметров через URL, и если они передаются, я хочу, чтобы затем использовать каждый из параметров в качестве фильтра в объект QuerySet. Так что в принципе. если прошло не параметр, а затем захватить все данные для пользователей. если пространство имен передается в Я хочу фильтровать по пользователю и пространство имен. если пути пересекались, я хочу, чтобы отфильтровать пользователей, пространства имен, и путь. Сейчас это не делаю.
У меня это настройки 3 различных URL-адресов, которые идут в 3 разных viewsets потому что встречаясь я пытаюсь сделать это один URL-адрес его ошибки и не работать вообще.
Я тоже хочу, пространства имен и путь к быть дополнительно включен в URL, так что URL будет работать без namepsace и пути. Когда я попробовал один URL-адрес для этого потребуется как параметры для работы....
URL-адреса:
router.register(r'preferences', PreferenceUserViewSet, basename='Preference')
router.register(r'preferences/(?P. )', PreferenceNamespaceViewSet, basename='Preference
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):
queryset = Preference.objects.filter(user_id=1)
return queryset
class PreferenceNamespaceViewSet(viewsets.ModelViewSet):
model = Preference
serializer_class = PreferenceSerializer
lookup_namepsace = 'namespace'
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')
queryset = Preference.objects.filter(user_id=1, namespace=namespace)
return queryset
class PreferencePathViewSet(viewsets.ModelViewSet):
model = Preference
serializer_class = PreferenceSerializer
lookup_namepsace = 'namespace'
lookup_path = 'path'
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')
path = self.request.query_params.get('path')
queryset = Preference.objects.filter(user_id=1, namespace=namespace, path=path)
return queryset
Я пытаюсь придумать простое решение для этого процесса.
Что должно произойти, если пространства имен, а путь не прошел взамен всех предпочтений. если пространство имен включена, настройки фильтра по пространству имен и же с пути.