zoukankan      html  css  js  c++  java
  • 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('失败')
    复制代码
  • 相关阅读:
    Java泛型
    pyhthon 求GPA平均学分绩点
    机器学习 数据预处理之独热编码(One-Hot Encoding)
    python 取整itertools
    python 输入输出
    jQuery插件开发模式
    shiro 与 web 的结合
    java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
    使用quartz 定时任务
    EasyIcon:免费图标搜索和下载平台
  • 原文地址:https://www.cnblogs.com/ngngng/p/13891106.html
Copyright © 2011-2022 走看看