drf serializer官网所得

1,在serializer.save的时候要加入新的内容

save时,在request.data内容不够的情况下加入新的内容,

serializer.save(owner=request.user)

2,限制,报错

def multiple_of_ten(value):
    if value % 10 != 0:
        raise serializers.ValidationError('Not a multiple of ten')

class GameRecord(serializers.Serializer):
    score = IntegerField(validators=[multiple_of_ten])

3,更新原有数据

serializer = CommentSerializer(comment, data={'content': u'foo bar'}, partial=True)

4,序列化套序列化

class UserSerializer(serializers.Serializer):
    email = serializers.EmailField()
    username = serializers.CharField(max_length=100)

class CommentSerializer(serializers.Serializer):
    user = UserSerializer(required=False)   #required=False表示可以为空    #many=True 表示接受多个值为list.
  content = serializers.CharField(max_length=200) 
  created
= serializers.DateTimeField()

5,create

class UserSerializer(serializers.ModelSerializer):
    profile = ProfileSerializer()

    class Meta:
        model = User
        fields = ('username', 'email', 'profile')

    def create(self, validated_data):
        profile_data = validated_data.pop('profile')
        user = User.objects.create(**validated_data)
        Profile.objects.create(user=user, **profile_data)
        return user

6

猜你喜欢

转载自www.cnblogs.com/52forjie/p/10145277.html
DRF
今日推荐