django-restframework의serializer 처리 작용

django에서 여러 개의 serializer를 통해 서로 다른 데이터베이스 데이터 처리 모델LIST를 만들 수 있을 때: 되돌아오는 데이터를 가공하고 장식할 수 있다
class ManageDeliveryDetailSerializer(serializers.ModelSerializer):
    user = serializers.HiddenField(
        default=serializers.CurrentUserDefault()
    )
    dn = PLDeliveryinsSerializer()
    class Meta:
        model = DeliveryDetail
        fields = '__all__'

n은 외부 키로 serializer를 실례화할 수 있으며 되돌아온 후에 구체적인 dn 실례를 얻을 수 있으며 모델에서 정의한 방법을 다시 작성할 수 있습니다 torepresentation 함수와 모델의 방법을 호출하여 전송된 데이터를 처리합니다
model.py에서 class Example: exa = model을 정의합니다.CharField() def foo(self): pass
serializer.py에서 class Example Serializer(serializer.Model Serializer) 호출: class Meta: model = Example fields ='all'
    def to_representation(self, obj):
	        data = super(BatchProductSerializer, self).to_representation(obj)
	      	exa = obj.foo()
	        data['exa'] = exa
	        return data

POST시: POST에서 온 데이터를 검증할 수 있습니다. 예를 들어serializer에username=serializers를 정의할 수 있습니다.CharField(required=True,allow blank=False,label='사용자',validators=[UniqueValidator(queryset=User.objects.all(),message='사용자가 이미 존재함')])는 전방에서 데이터를 전송하는 과정에서username 필드에 대해 유일성 검증을 하고 유일하지 않으면 사용자 이름이 이미 존재한다고 되돌려줍니다
같은 ViewSet에서 다른 serializer 클래스를 사용하면view에서 사용할 수 있습니다.py에서 서로 다른 HTTP 요청 유형을 동적으로 정의하는 serializer 클래스
    def get_serializer_class(self):
        if self.action == 'retrieve':
            return ...Serializer
        elif self.action == 'create':
            return ...Serializer
        return ...Serializer

PS:fields ='all'일 때 기본적으로 Serializer에서 만든 모든 새 필드와 기존 모델의 모든 필드를 되돌려줍니다

좋은 웹페이지 즐겨찾기