model表
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'] # 排除掉的字段 不能和fields一起用 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) """