• django使用restframework序列化查询集合(querryset)


    第一:

    pip install djangorestframework

    第二:

    在setting.py文件中的app添加名为:

     'rest_framework',

    第三:再项目的APP下面新建名为(可以别的名字):serializers.py

    第四:引入模型类到serializers.py,并在serializers.py中新建序列化类并定义要返回的字段

    from rest_framework import serializers  #引入序列化的模块
    from ceshi.models import ceshiList,recordList   #引入模型类
    
    class ceshiListSer(serializers.ModelSerializer):
        detectionTime = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)   #用于重新设定时间的格式
        class Meta:
            model = ceshiList
            fields=("id","ceshiname","number","statusList","detectionTime ")
            # fields="__all__"   #可以像上面一样定义字段,也可以这样全部
    
    
    class recordListSer(serializers.ModelSerializer):
        addTime = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
        class Meta:
            model = recordList
            fields = ("id", "ceshi2name", "addTime","ipList")
            # fields="__all__"

    第五:在view.py中调用serializers.py中的类返回序列化的json

    from ceshi.serializers import ceshiListSer,recordListSer
    from ceshi.models import ceshiList,recordList
    from django.http import JsonResponse
    
    #就简单使用一个进行说明
    def ceshifunc():
        ceshi = ceshiList.objects.all()  #获取模型类对象集合
        serializer = ceshiListSer(ceshi , many=True)   #many=True 可以返回多条,如果没有添加,只返回第一条
        return JsonResponse({"data": serializer.data})   #serializer.data是已经序列化的json数据  

     第六:如果前端需要不同样式的JSON格式,就需要在serializers.py中,再定义一个序列化类

  • 相关阅读:
    C#内建接口:IComparable
    C#内建接口:IEnumerable
    WPF中使用资源
    WPF中的触发器(Trigger)
    一文详解 | 开放搜索兼容Elasticsearch做召回引擎
    阿里云李飞飞:中国数据库的时与势
    如何构建流量无损的在线应用架构 | 专题开篇
    如何构建一个流量无损的在线应用架构 | 专题中篇
    多任务学习模型之ESMM介绍与实现
    云原生时代的运维体系进化
  • 原文地址:https://www.cnblogs.com/weilaibuxiangshuo/p/11000197.html
Copyright © 2020-2023  润新知