Django REST ViewSet создать - PullRequest
       4

Django REST ViewSet создать

0 голосов
/ 12 июля 2020

У меня есть набор просмотра для сотрудников, в который я хочу добавить определение создания, чтобы я мог установить работодатель = request.user.pk и добавить сотрудника (пользователя).

Я пытался создание определения (см. код ниже), но сериализатор всегда недействителен, поэтому он возвращает статус 400. Я не знаю, это ли я, но, похоже, отсутствует документация по функции создания, поэтому я не могу понять, как это сделать это правильно. Есть идеи?

class EmployeeViewSet(viewsets.ModelViewSet):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer

    def list(self, request):
        queryset = self.queryset.filter(employer=request.user.pk)
        serializer = CustomUserSerializer(queryset, many=True)
        return Response(serializer.data)

    def create(self, request):
        serializer = self.serializer_class(data=request.data)

        if serializer.is_valid():
            CustomUser.objects.create_user(**serializer.validated_data)
            return Response(serializer.validated_data, status=status.HTTP_201_CREATED)

        return Response({'status': 'Bad Request',
                         'message': serializer.is_valid()},
                          status=status.HTTP_400_BAD_REQUEST)

1 Ответ

1 голос
/ 12 июля 2020

Заменить метод perform_create как,

class EmployeeViewSet(viewsets.ModelViewSet):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer

    def get_queryset(self):
        return CustomUser.objects.filter(employer=self.request.user.pk)

    <b>def perform_create(self, serializer):
        serializer.save(employer=self.request.user)</b>
...