many = True serializer Viewset에서 인증 된 사용자 가져 오기

Luc

Django Rest Framework를 사용하여 나머지 API를 작성 중입니다. POST 메서드에서 개체를 생성하는 엔드 포인트가 있으며이 메서드는 대량 추가를 허용하기 위해 재정의됩니다. 그러나 객체는 Pacient와 Symptoms 사이의 "중간 테이블"이며이를 생성하기 위해서는 증상에 대한 pacient 객체 또는 ID와 동일한 정보를 제공해야합니다. 요청에서 Symptom id를 얻었으므로 문제가되지는 않지만 인증 된 사용자 (요청하는 사람)입니다. 이제이를 수행하기 위해 serializer에서 create 메서드를 어떻게 편집합니까?

내 견해는 다음과 같습니다.

class PacienteSintomaViewSet(viewsets.ModelViewSet):
    serializer_class = SintomaPacienteSerializer
    queryset = SintomaPaciente.objects.all()
    permission_classes = (IsAuthenticated, )
    http_method_names = ['post', 'get']

    def create(self, request, *args, **kwargs):
        many = True if isinstance(request.data, list) else False
        serializer = SintomaPacienteSerializer(data=request.data, many=many)
        if serializer.is_valid():
            sintomas_paciente_lista = [SintomaPaciente(**data) for data in serializer.validated_data]
            print(serializer.validated_data)
            SintomaPaciente.objects.bulk_create(sintomas_paciente_lista)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

그리고 이것은 내 직렬 변환기입니다.

class SintomaPacienteSerializer(serializers.ModelSerializer):
    def create(self, validated_data):
        sintoma_paciente = SintomaPaciente.objects.create(
            sintoma_id=self.validated_data['sintoma_id'],
            paciente_id=THIS NEEDS TO BE FILLED,
            data=self.validated_data['data'],
            intensidade=self.validated_data['intensidade'],
        )
        return sintoma_paciente

    class Meta:
        model = SintomaPaciente
        fields = ('id', 'sintoma_id', 'paciente_id', 'intensidade', 'data',
                  'primeiro_dia', 'ativo')

Kamilyrb

두 가지 방법이 있습니다. 첫째, 컨텍스트 내에서 사용자를 serializer에 전달하고 serializer에서 사용할 수 있습니다.

당신의 관점에서 :

def create(self, request, *args, **kwargs):
    many = True if isinstance(request.data, list) else False
    serializer = SintomaPacienteSerializer(data=request.data, many=many,context={'user':request.user})

직렬 변환기에서이 사용자에 액세스 할 수 있습니다. self.context['user']

두 번째 방법은 사용자를 serializer에 다시 전달할 필요가 없습니다. 또한 View에서 create 메서드를 이미 재정의 한 경우 serializer에서 create 메서드를 재정의 할 필요가 없습니다. 논리적으로 잘못되었다고 생각합니다. 어쨌든 뷰에서 개체를 만들 때 사용자를 사용할 수 있습니다.

def create(self, request, *args, **kwargs):
    many = True if isinstance(request.data, list) else False
    serializer = SintomaPacienteSerializer(data=request.data, many=many)
    if serializer.is_valid():
        sintomas_paciente_lista = [SintomaPaciente(**data,paciente_id=request.user.id) for data in serializer.validated_data]
        print(serializer.validated_data)
        ....

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.NET MVC에서 인증 된 ID 사용자 데이터 가져 오기

분류에서Dev

RESTful .NET 4.5 API에서 현재 인증 된 사용자 가져 오기

분류에서Dev

SAPUI5 앱 내에서 인증 된 사용자 ID 가져 오기

분류에서Dev

Django REST Framework serializer가 many = True 컨텍스트에서 사용되는지 확인

분류에서Dev

Mono 및 ServiceStack에서 Apache Basic Auth로 인증 된 인증 된 사용자 가져 오기

분류에서Dev

MacOS에서 자체 서명 된 SSL 인증서 가져 오기

분류에서Dev

웹 API에서 인증 된 사용자 이름을 가져 오는 방법 (토큰 기반 인증)

분류에서Dev

인증 된 사용자로부터 CognitoId 가져 오기

분류에서Dev

Plone 4-인증 된 사용자 유형 가져 오기

분류에서Dev

Blazor 앱의 미들웨어 클래스에서 인증 된 사용자 가져 오기

분류에서Dev

firebase 인증에서 사용자를 null로 가져 오기

분류에서Dev

Firebase 인증에서 사용자 가져 오기

분류에서Dev

Plone에 현재 로그인 된 사용자 가져 오기

분류에서Dev

현재 인증 된 사용자를 기반으로 리소스 가져 오기

분류에서Dev

Thymeleaf-인증 된 사용자의 전체 이름 가져 오기

분류에서Dev

GraphRepository에서 인증 된 사용자가 소유 한 데이터 만 가져 오는 방법

분류에서Dev

명령 프롬프트에서 Windows의 개인 키가있는 자체 서명 된 인증서 가져 오기

분류에서Dev

Laravel-특정 인증 가드에서 사용자 가져 오기

분류에서Dev

many = True 인 serializer.is_valid

분류에서Dev

자체 서명 된 인증서를 가져 오는 동안 '인증 기관이 아님'

분류에서Dev

인증 된 사용자가 뒤 따르는 사용자의 최근 미디어 가져 오기

분류에서Dev

Windows 인증서 관리자에 저장된 인증서에 액세스하기 위해 Python 응용 프로그램 가져 오기

분류에서Dev

사후 인증 Lambda 트리거에서 AWS Cognito 인증 사용자 가져 오기

분류에서Dev

오류 : 사용자가 nodejs에서 인증 된 Amazon cognito가 아닙니다.

분류에서Dev

호스트 기반 인증에서 허용 된 호스트 목록 가져 오기

분류에서Dev

사용자 지정 인증 MVC 4에 로그인 한 현재 사용자 가져 오기

분류에서Dev

PHP를 사용하여 APK 인증서 키 가져 오기

분류에서Dev

다이제스트 인증 (Perl)을 사용하는 서버에서 사용자 이름 가져 오기

분류에서Dev

인라인 어셈블리를 사용하여 C 함수에서 반환 된 문자 가져 오기

Related 관련 기사

  1. 1

    ASP.NET MVC에서 인증 된 ID 사용자 데이터 가져 오기

  2. 2

    RESTful .NET 4.5 API에서 현재 인증 된 사용자 가져 오기

  3. 3

    SAPUI5 앱 내에서 인증 된 사용자 ID 가져 오기

  4. 4

    Django REST Framework serializer가 many = True 컨텍스트에서 사용되는지 확인

  5. 5

    Mono 및 ServiceStack에서 Apache Basic Auth로 인증 된 인증 된 사용자 가져 오기

  6. 6

    MacOS에서 자체 서명 된 SSL 인증서 가져 오기

  7. 7

    웹 API에서 인증 된 사용자 이름을 가져 오는 방법 (토큰 기반 인증)

  8. 8

    인증 된 사용자로부터 CognitoId 가져 오기

  9. 9

    Plone 4-인증 된 사용자 유형 가져 오기

  10. 10

    Blazor 앱의 미들웨어 클래스에서 인증 된 사용자 가져 오기

  11. 11

    firebase 인증에서 사용자를 null로 가져 오기

  12. 12

    Firebase 인증에서 사용자 가져 오기

  13. 13

    Plone에 현재 로그인 된 사용자 가져 오기

  14. 14

    현재 인증 된 사용자를 기반으로 리소스 가져 오기

  15. 15

    Thymeleaf-인증 된 사용자의 전체 이름 가져 오기

  16. 16

    GraphRepository에서 인증 된 사용자가 소유 한 데이터 만 가져 오는 방법

  17. 17

    명령 프롬프트에서 Windows의 개인 키가있는 자체 서명 된 인증서 가져 오기

  18. 18

    Laravel-특정 인증 가드에서 사용자 가져 오기

  19. 19

    many = True 인 serializer.is_valid

  20. 20

    자체 서명 된 인증서를 가져 오는 동안 '인증 기관이 아님'

  21. 21

    인증 된 사용자가 뒤 따르는 사용자의 최근 미디어 가져 오기

  22. 22

    Windows 인증서 관리자에 저장된 인증서에 액세스하기 위해 Python 응용 프로그램 가져 오기

  23. 23

    사후 인증 Lambda 트리거에서 AWS Cognito 인증 사용자 가져 오기

  24. 24

    오류 : 사용자가 nodejs에서 인증 된 Amazon cognito가 아닙니다.

  25. 25

    호스트 기반 인증에서 허용 된 호스트 목록 가져 오기

  26. 26

    사용자 지정 인증 MVC 4에 로그인 한 현재 사용자 가져 오기

  27. 27

    PHP를 사용하여 APK 인증서 키 가져 오기

  28. 28

    다이제스트 인증 (Perl)을 사용하는 서버에서 사용자 이름 가져 오기

  29. 29

    인라인 어셈블리를 사용하여 C 함수에서 반환 된 문자 가져 오기

뜨겁다태그

보관