zoukankan      html  css  js  c++  java
  • ModelSerializer的功能

    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)
    """

     

  • 相关阅读:
    电力三维基础信息平台
    基于三维GIS技术的输电线路地理信息系统的设计与实现
    linux学习笔记(1)
    linux学习笔记(4)
    linux学习笔记(8)
    linux学习笔记(6)
    linux学习笔记(3)
    linux 学习笔记(2)
    linux学习笔记(7)
    ASCII码表完整版
  • 原文地址:https://www.cnblogs.com/pythonqwertytre/p/13746720.html
Copyright © 2011-2022 走看看