DRF的ModelSerializers中自定义了字段就必须重写create方法

Posted 大聪明Smart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DRF的ModelSerializers中自定义了字段就必须重写create方法相关的知识,希望对你有一定的参考价值。

DRF在写ModelSerializers时,如果你自定义了字段那么必须重写create方法,不然在ModelViewset中调用create方法时会报异常。

class CommentModelSerializers(serializers.ModelSerializer):
    username = serializers.CharField(source='username.username', required=True)

    class Meta:
        model = models.Comment
        fields = ['id', 'content', 'add_time', 'article','username', 'pid']

    def create(self, validated_data):
        uid = validated_data.pop('username').get('username')
        username = models.UserInfo.objects.get(pk=uid)
        validated_data.update({'username': username})
        # print(validated_data)
        instance = models.Comment.objects.create(
            **validated_data
        )
        return instance

上边自定义了username字段显示,则必须重写create方法

以上是关于DRF的ModelSerializers中自定义了字段就必须重写create方法的主要内容,如果未能解决你的问题,请参考以下文章

drf--ModelSerializers序列化

DRF 视图

DRF(Django REST Framework)框架

drf框架序列化

DRF框架中的异常处理程序

drf框架4-views视图家族操作