【django】06-详解模型类序列化器ModelSerializer的使用

首先定义一个表

class User(models.Model)
	"""定义一个测试表User"""
	username = models.CharField(max_length=30, verbose_name='用户名')
	password = models.CharField(max_length=20, verbose_name='密码')
	password2 = models.CharField(max_length=20, verbose_name='确认密码')
	class Meta:
		db_table = 'User'

定义一个模型序列化器

class TestUserSerializer(serializers.ModelSerializer)
	"""测试ModelSerializer的功能"""
	# 有些字段也需要序列化, 但是这些字段不在参照模型中
	# 在这里添加额外需要序列化的字段, 即不在指定参照模型中的字段, 
	# 再直白点, 就是不在表User内的字段
	mobile = serializers.CharFileld(label='手机号', min_length=11, max_length=11)  
	
	class Meta:
		# 指明参照模型
		model = User
		# 指明字段, 即要序列化的字段
		fields = '__all__'  # 所有表User中字段
		fields = ['username', 'password', 'mobile'] # 指定字段 新添加的也可以指定
		exclude = ['password2']  # 排除掉的字段
		read_only_fields = ('username', 'password')  # 标明只读字段 
		
		# 添加或修改原有字段的选项残数据
		extra_kwargs = {
            'username': {
                'min_length': 5,
                'max_length': 20,
                'error_messages': {
                    'min_length': '仅允许5-20个字段的用户',
                    'max_length': '仅允许5-20个字段的用户',
                }
            },
            'password': {
                'write_only': True,
                'min_length': 8,
                'max_length': 20,
                'error_messages': {
                    'min_length': '仅允许8-20个字段的密码',
                    'max_length': '仅允许8-20个字段的密码',
                }
            }
        } 

代码直接打的 主要是讲解用法 ~~!

灵活使用模型类和模型类序列化
可以添加字段(直接添加)
减少字段(fields)
修改字段(extra_kwargs)

你可能感兴趣的:(django)