Serializer和ModelSerializer

简介: ModelSerializer 先使用ModelSerializer测试一下结果,例: # models.py ###### from django.db.models import Model, CharField, BooleanField, ForeignKey class TestM.

ModelSerializer

  • 先使用ModelSerializer测试一下结果,例:

    # models.py
    ######
    from django.db.models import Model, CharField, BooleanField, ForeignKey
    
    class TestModel(User):
        name = CharField(max_length=64, name='name')
    
    class TestModel(Model):
        status = BooleanField(default=False, name='status')
        user = ForeignKey(User, db_column="user_id", name='user', on_delete=CASCADE,
                                 related_name="user_test")
    
    ######
    
    # seriailzer.py
    ######
    from models import TestModel
    from rest_framework.serializers import ModelSerializer, IntegerField, Serializer
    from rest_framework.serializers import SerializerMethodField
    
    class TestSerializer(ModelSerializer):
        user = IntegerField(required=False)
        status = SerializerMethodField()
      
        class Meta:
            model = TestModel
            fields = ("id", "status", "uesr")
      
  • 把外键user设置为了非必填,但是现在去调用post接口就会发现user依然是必填的,会提示

    {
        "detail": "This field is required.",
        "sub_detail": {
            "user": [
                "This field is required."
            ]
        }
    }

Serializer

  • 再使用Serializer测试一下结果。
  • 代码就不在贴了,直接把serializer.py文件中的class TestSerializer(ModelSerializer):改为class TestSerializer(Serializer):就可以了
  • 这时就会发现再次调用接口就不会再出现问题了

区别

  • ModelSerializer类和Serializer类大致一样,不过添加了一些功能,可以更加便捷的去校验model中的数据.
  • ModelSerializer会基于 model 自动创建一些字段
  • ModelSerializer会自动生成一些验证,比如 unique_together 验证.
  • ModelSerializer包含简单的默认的 create()update().

参考链接:时光不写博客-Serializer和ModelSerializer

相关文章
|
3月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
5月前
RedisTemplate序列化的问题
RedisTemplate序列化的问题
40 1
|
7月前
|
JSON Java Maven
使用Jackson进行 JSON 序列化和反序列化
使用Jackson进行 JSON 序列化和反序列化
142 0
|
JSON JavaScript 前端开发
Jackson与Json的介绍与使用
Jackson与Json的介绍与使用
89 0
|
NoSQL Java Redis
RedisTemplate的RedisSerializer(序列化)
RedisTemplate的RedisSerializer(序列化)
114 0
|
存储 JSON fastjson
聊聊fastjson反序列化的那些坑
聊聊fastjson反序列化的那些坑
2910 0
聊聊fastjson反序列化的那些坑
|
JSON Java 数据格式
Jackson对象 ObjectMapper实现序列化数据为json
Jackson对象 ObjectMapper实现序列化数据为json
|
JSON 前端开发 Java
2. 妈呀,Jackson原来是这样写JSON的
底层原理,jackson-core核心模块JsonGenerator流式API高效写JSON
1306 0
2. 妈呀,Jackson原来是这样写JSON的
|
XML JSON 前端开发
2. 妈呀,Jackson原来是这样写JSON的(上)
2. 妈呀,Jackson原来是这样写JSON的(上)
2. 妈呀,Jackson原来是这样写JSON的(上)
|
JSON fastjson Java
2. 妈呀,Jackson原来是这样写JSON的(下)
2. 妈呀,Jackson原来是这样写JSON的(下)
2. 妈呀,Jackson原来是这样写JSON的(下)