猿问

在创建方法 django rest 框架中引发错误

ValidationError我在验证我的clean方法中的数据时抛出models.py. 如何在我的自定义create方法中捕获此错误,以便它以这种方式抛出包含错误详细信息的 json 对象


{

    "detail":"input is not valid"

}

#models.py

class Comment(models.Model):

    text = models.CharField(max_length=256)

    commenter = models.ForeignKey(User, on_delete=models.SET_NULL)

    post = models.ForeignKey(Post, on_delete=models.SET_NULL)


    def clean(self, *args, **kwargs):

        if containsBadWords(text):

            raise ValidationError(_("Be Polite"))

#serializer.py

def create(self, validated_data):

    request = self.context.get('request', None)

    commenter = request.user

    try:

        obj = Comment.objects.create(

            post = validated_data['post'],

            commenter = commenter,

            text = validated_data['text']

        )

    except ValidationError as ex:

        raise ex

    return obj


德玛西亚99
浏览 136回答 1
1回答

慕雪6442864

检查你是否抛出了serializers.ValidationErrornot ValidationErrorof django.core.exceptions。您可以通过以下方式更改您的create方法:def create(self, validated_data):    request = self.context.get('request', None)    commenter = request.user    try:        obj = Comment.objects.create(            post = validated_data['post'],            commenter = commenter,            text = validated_data['text']        )    except ValidationError as ex:        raise serializers.ValidationError({"detail": "input is not valid"})    return obj
随时随地看视频慕课网APP

相关分类

Python
我要回答