>

다음은 간단한 뷰셋 및 시리얼 라이저 클래스입니다.

class UserSerializer(ModelSerializer):
    class Meta:
        model = User
        fields = ['id', 'email', 'first_name', 'last_name']
....    
class UserViewSet(ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

사용자의 이름 만 업데이트하고 싶습니다. 이 경우 PATCH 를 사용해야합니다   {"first_name": "New First Name"} . 그러나 동시에, 그것은 PUT 처럼 보입니다.   {"first_name": "New First Name"}  모든 필드가 지정되었는지 확인해야하기 때문에 동일한 방식으로 작동하지 않아야합니다. 적어도 나는 그렇게 생각했다. 내가 잘못? 그리고 내가 있다면, update 의 차이점은 무엇입니까  그리고 partial_update  Django Rest Framework에서 두 가지를 모두 유지할 이유가 있습니다 (추가 방법은 추가 테스트를 의미하기 때문에 후자의 질문은 약간 철학적입니다. 사람들 이이 PUT/패치 쌍이 실제로 혼란스러워하는 것처럼 보이기 때문에). 그건 그렇고, 나는 djangorestframework==3.8.2 를 사용하고 있습니다. . 감사합니다.

  • 답변 # 1

    생성 된 시리얼 라이저를 보면 필수 필드가 없음을 알 수 있습니다. 이 경우 PUT과 PATCH는 비슷한 동작을합니다. 필수 입력란이 있으면 차이가 표시됩니다.

    serializer = UserSerializer(instance=user, data={"first_name": "New First"})
    print(serializer)                                                                                                                                                                                  
        UserSerializer(data={'first_name': 'New First'}, instance=<User: tester>):
            id = IntegerField(label='ID', read_only=True)
            email = EmailField(allow_blank=True, label='Email address', max_length=254, required=False)
            first_name = CharField(allow_blank=True, max_length=30, required=False)
            last_name = CharField(allow_blank=True, max_length=150, required=False)
    
    

관련 자료

  • 이전 printf - C에서 문자열로 16 진
  • 다음 ios - Localizablestrings에서 값으로 키를 가져옵니다