• Django序列化


    这是我的model里面的表

    复制代码
    1 class User(models.Model):
    2     username = models.CharField(max_length=32,verbose_name='用户名')
    3     age = models.IntegerField(verbose_name='年龄',null=True)
    4     home = models.CharField(max_length=32,verbose_name='家乡')
    5 
    6     class Meta:
    7         db_table = 'user'
    复制代码

    普通序列化

    复制代码
    from rest_framework import serializers   #倒入rest_framework里面的serializers
    
    
    class UserSer(serializers.Serializer):
        username = serializers.CharField(max_length=32)   #把每个字段添入其中
        age = serializers.IntegerField(allow_null=True)  #年龄可以为null
        home = serializers.CharField(max_length=32)

    ######################################################################
    查到的数据
    {
            "username": "孔加贝月月",
            "age": 19,
            "home": "河南"
        },
        {
            "username": "尼大爷",
            "age": 20,
            "home": "河北"
        },
        {
            "username": "尼大娘",
            "age": 21,
            "home": "湖北"
        },
        {
            "username": "尼你妹",
            "age": 20,
            "home": "湖南"
        },
        {
            "username": "孔大爷",
            "age": 100,
            "home": "你心里"
        }
    复制代码

    添加数据的序列化

    复制代码
    from rest_framework import serializers
    
    from app01.models import User
    #还是刚刚那个序列化只不过是添加了一些代码
    class UserSer(serializers.Serializer):
        username = serializers.CharField(max_length=32)
        age = serializers.IntegerField(allow_null=True)
        home = serializers.CharField(max_length=32)
        
        #序列化添加数据
        def create(self,validated_data):
            return User.objects.create(**validated_data)

    ##相对应views里面的代码
    def post(self,request):
    data = request.data
    user = UserSer(data=data)
    try:
    user.is_valid()
    user.save()
    return Response('成功')
    except Exception:
    print('序列化加入未成功')
    return Response('失败')
    复制代码

    修改的序列化

    复制代码
    class UserSer(serializers.Serializer):
        username = serializers.CharField(max_length=32)
        age = serializers.IntegerField(allow_null=True)
        home = serializers.CharField(max_length=32)
    
        #序列化添加数据
        def create(self,validated_data):
            return User.objects.create(**validated_data)
    
       #这里开始是修改的序列化
        def update(self, instance, validated_data):
            instance.username = validated_data.get('username',instance.username)   #把他的每个字段都写入其中进行修改
            instance.age = validated_data.get('age',instance.age)
            instance.home = validated_data.get('home',instance.home)
    
            instance.save()    #提交 修改
            return instance

    #修改相对应的views里的代码
    def put(self,request):
        data = request.data

    user = User.objects.filter(id=data.get('id')).first()
    update_user = UserSer(user,data=data)

    try:
    update_user.is_valid()
    update_user.save()
    return Response('成功')
    except Exception as e:
    print(e)
    return Response('失败')
    复制代码
  • 相关阅读:
    怀才就像怀孕,时间久了才能让人看出来
    程序开发基础学习五(json配置、解析文件,c++篇)
    PHP 代码 加密
    2010年8月22日周日_StylingAndSkinningOverview_6.10
    2010年8月21日周六_GeoprocessingTasks_6.7
    2010年8月19日周四_insideTheAPI_Using Extent_6.4
    2010年8月22日周日_StylingAndSkinningNavigation_6.11
    2010年8月20日周五_UsingGraphic_6.5
    2010年8月18日周三_insideTheAPI_usingMap_6.2
    2010年8月21日周六_RoutingTasks_6.8
  • 原文地址:https://www.cnblogs.com/ngngng/p/13891106.html
Copyright © 2020-2023  润新知