data=인자가 주어질때
.is_valid()가 호출되고
.initioal_data 필드에 접근할 수 있고, .validated_data를 통해 유효성 검증에 통과한 값들이 Save()시에 사용
.errors -> 유효성 검증 후에 오류내역,
.data -> 유효성 검증 후에 갱신된 인스턴스에 대한 필드값
1.DB에 저장한 관련 Instance를 리턴,
.valiated과 kwargs 사전에 합친 데이터를 DB에 저장하려고함.
form과는 다르게 .save할때 바로 업데이트 할때 kwarg를 넘기면 됨
.instance를 줬을때는 update, 아니면 create
UniqueValidator
모델에 unique.True를 지정하면 모델 index로 자동으로 지정되며, Validator도 자동으로 작동한다.
DRFㅇ의 validator는 다른 Validator를 사용한다. (Form의 Validator와 다르다!)
validate_필드명으로 유효성 검사 수행가능.
class 기반 ViewSet등에서 perform_create 등으로 재정의할 수 있다.
class PostViewSet(ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
def perform_create(self, serializer):
author = self.request.user
ip = self.request.META['REMOTE_ADDR']
serializer.save(author=author, ip=ip)
#form에서는 .save(commit=False)를 통해 임시저장을 한후,
#추가필드에 대해 지정한 후 commit했으나,
#serializer는 kwargs로 전달하여 바로 commit이 가능하다.