宜昌网站制作公司排名,市场营销策略分析案例,网页升级紧急通知自动跳转,wordpress时间文件夹使用场景
用于将接收到的输入转换为内部可用的数据形式#xff1b;
例子
to_internal_value主要在反序列化时用到#xff0c;其作用处理API请求携带的数据#xff0c;对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据#xff0c;比…
使用场景
用于将接收到的输入转换为内部可用的数据形式
例子
to_internal_value主要在反序列化时用到其作用处理API请求携带的数据对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据比如extra_info字段如下所示:
{extra_info: {msg: Hello world!,},data: {name : liuyongzhan,status : active,liked_by: [2, 3, 4]}
} 由于extra_info字段不属于我们TestSerializer类里的字段如果我们直接使用TestSerializer类对上述数据进行反序列化会出现错误。 事实上反序列化时我们只需要提取data然后对其反序列化即可所以我们可以重写to_internal_value提取我们所需要的数据忽略不想要的数据。
from django.db import modelsclass TestModel(models.Model):name models.CharField(_(名称), max_length50, nullTrue, blankTrue, default)status models.CharField(_(状态), max_length10, nullTrue)create_by models.ForeignKey(tousers.User, on_deletemodels.SET_NULL, nullTrue)liked_by models.ManyToManyField(tousers.User)from rest_framework import serializersclass TestSerializer(serializers.ModelSerializer):class Meta:model TestModelfields __all__def to_internal_value(self, data):# 提取所需要的数据对其进行反序列化data代表未验证的数据article_data data[data]return super().to_internal_value(article_data)