본문 바로가기
파이썬

파이썬 Django REST Framework serializer 필드 필수 = false

by º기록 2021. 1. 1.
반응형

문서에서 :

읽기 전용 필드가 표현을 직렬화 할 때 사용되지만 역 직렬화 중에 인스턴스를 업데이트 할 때 사용되지 않도록하려면 True로 설정합니다.

기본값은 False입니다.

필수 일반적으로 deserialization 중에 필드가 제공되지 않으면 오류가 발생합니다. 역 직렬화 중에이 필드가 필요하지 않으면 false로 설정하십시오.

기본값은 True입니다.

그래서 nullable이 아닌 필드가있는 모델이 있지만 pre_save 메서드에 채워지기를 원하므로 serializer에서 필드를 required = False 로 설정했지만 그렇지 않은 것 같습니다. 작업. 레코드를 저장할 때 여전히 오류가 발생합니다.

class FavoriteListSerializer(serializers.ModelSerializer):
    owner = serializers.IntegerField(required=False)
    class Meta:
        model = models.FavoriteList

최신 정보: ViewSet에 serializer_class = serializers.FavoriteListSerializer 를 추가했습니다. 이제 This field is required 대신 유효성 검사를 통과했다고 생각하지만 를 얻습니다. 이 필드는 null 일 수 없습니다. pre_save 메소드가 실행되고 있지 않은지 확인했습니다. 아이디어가 있습니까?

 

해결 방법

 

그래, 나도 언젠가이 문제에 부딪혔다. 유효성 검사 제외도 업데이트해야합니다.

class FavoriteListSerializer(serializers.ModelSerializer):
    owner = serializers.IntegerField(required=False)
    class Meta:
        model = models.FavoriteList

    def get_validation_exclusions(self):
        exclusions = super(FavoriteListSerializer, self).get_validation_exclusions()
        return exclusions + ['owner']

 

참조 페이지 https://stackoverflow.com/questions/19780731

 

 

반응형

댓글