首先定义一个表
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)