from rest_framework import serializers
class XXX(serializers.ModelSerializer):
# 显示表名字段
自定义反序列化方法:
方法一:
# 自定义序列化字段 (要再次处理的字段)
gender = serializers.SerializerMethodField()
def get_gender(self,obj): # obj :单个表对象 获取第二值
return obj.get_sex_display()
方法二: (插拔式)
@property # 为自定义序列化字段 配置(插拔式 : 创建给任意对象使用,不会反序列化入库)--》提供校验
def gender(self):
return self.get_sex_display()
re_pwd = serializers.CharField(required=True, write_only=True)
# 图片显示全路径
image_path = serializers.SerializerMethodField()
def get_image_path(self, obj):
# settings.MEDIA_URL: 自己配置的 /media/,给后面高级序列化与视图类准备的
# obj.icon不能直接作为数据返回,因为内容虽然是字符串,但是类型是ImageFieldFile类型
return ‘%s%s%s‘ % (r‘http://127.0.0.1:8000‘, settings.MEDIA_URL, str(obj.image))
class Meta:
model = models.表名
# 显示表包含所有字段
fields = "__all__"
# 明确排除掉哪些字段
exclude = (‘字段1‘, ‘字段2‘)
# 显示指明字段
fields = (‘字段1‘, ‘字段2‘)
# 指明只读字段
read_only_fields = ()
# 添加额外参数
extra_kwargs = {
write_only:只反序列化
read_only:只序列化
自定义字段默认只序列化(read_only)
}
# 局部钩子:validate_要校验的字段名(self, 当前要校验字段的值)
# 校验规则:校验通过返回原值,校验失败,抛出异常
def validate_字段名(self, value):
内部逻辑
return value
# 全局钩子:validate(self, 通过系统与局部钩子校验之后的所有数据)
def validate(self, attrs): # attrs是字典格式
内部逻辑
return attrs
# 注意:ModelSerializer类已经帮我们实现了 create 与 update 方法,不需要写create就能创建
原文:https://www.cnblogs.com/LYPZX/p/14325136.html