drf 序列化 提交数据库
model
class Depart(models.Model):
name = models.CharField(verbose_name='部门名', max_length=32)
level = models.IntegerField(verbose_name='等级',default=1)
序列化器ModelSerializer
class DepartSerializer(serializers.ModelSerializer):
# 存入数据库时候,不需要此字段
more = serializers.CharField()
class Meta:
model = models.Depart
fields = '__all__'
extra_kwargs = {
"name": {"max_length": 3, "min_length": 2},
}
def validate_name(self, value):
if value != 'szw':
raise exceptions.ValidationError('字段钩子校验失败')
return value
view
如果使用Serializer,在提交到数据库时,需要自己手动提交,如models.Depart.objects.create(**ser.validated_data)
class DepartView(OrPermissionAPIView):
def post(self, request, *args, **kwargs):
json_data = request.data
ser = DepartSerializer(data=json_data)
if ser.is_valid():
# 存入数据库之前,把数据库没有的字段去除,并拿到值
more = ser.validated_data.pop("more")
# 在save里写入字段=值
ser.save(name='atm')
return Response("ok")
else:
return Response(ser.errors)
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16757032.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步