rest_프레임워크 프레임워크 입문 (3)

6302 단어 django
rest_프레임워크 프레임워크 입문 (3)
  • ModelSerializer 클래스
  • 포함할 필드 지정
  • 지정 필드 서열화(기본 필드 추가 또는 덮어쓰기)
  • 읽기 전용 필드 지정
  • ModelSerializer 클래스
    Django 모델 정의와 밀접한 서열화 프로그램 클래스가 필요할 때, 모델 서버 클래스는 모델 필드에 대응하는 필드를 자동으로 만들 수 있는 단축키를 제공합니다.
    ModelSerializer 클래스와 Serializer 클래스의 차이점:
  • 모델에 따라 자동으로 필드를 생성합니다.
  • 이것은 자동으로 서열화기에 검증기를 생성합니다.
  • 간단한 기본 구현.create().update()를 포함한다.

  • 예:
    from rest_framework import serializers
    
    class UserInfoSerializer(serializers.ModelSerializer):
        '''      '''
        class Meta:
            model = Book
            fields = ('id', 'name', 'price')
            #   Book      
    

    기본적으로 클래스의 모든 모델 필드는 상응하는 서열화 프로그램 필드에 비칩니다.
    포함할 필드 지정
    모델 서열화 프로그램에서 기본 필드의 서브집합만 사용하려면fields나 exclude 옵션을 사용하십시오. 이fields 속성 현식 설정을 서열화해야 하는 모든 필드를 강력히 권장합니다.이렇게 하면 모델이 변경될 때 무의식중에 데이터가 노출될 가능성을 줄일 수 있다.
    fields 속성이 특수값으로 설정되었을 때 '__all__'는 사용 모델의 사용 필드를 나타낸다.예:
    from rest_framework import serializers
    
    class UserInfoSerializer(serializers.ModelSerializer):
        '''      '''
        class Meta:
            model = Book
            fields = '__all__' 
    

    exclude 속성은 서열화 프로그램에서 제외할 필드 목록입니다.예를 들어 Book 모델에name과 price 두 필드가 있는데, 아래는 마지막으로name만 서열화됩니다.
    from rest_framework import serializers
    
    class UserInfoSerializer(serializers.ModelSerializer):
        '''      '''
        class Meta:
            model = Book
            exclude= ('price',) 
    

    지정 필드 서열화(기본 필드 추가 또는 덮어쓰기)
    예:
    from rest_framework import serializers
    
    class UserInfoSerializer(serializers.ModelSerializer):
        url = serializers.CharField(source='get_absolute_url', read_only=True)
        groups = serializers.PrimaryKeyRelatedField(many=True)
    
        class Meta:
            model = Book
    

    읽기 전용 필드 지정
    예:
    from rest_framework import serializers
    
    class UserInfoSerializer(serializers.ModelSerializer):
        class Meta:
            model = Book
            fields = ('id', 'name', 'price')
            read_only_fields = ('name',)
    

    read_only_fields 뒤에는 필드 이름의 목록이나 모듈이 있습니다.

    좋은 웹페이지 즐겨찾기