Django数据结果集序列化并展示实现过程


Posted in Python onApril 22, 2020

示例为一对多的表关系,学生为多,老师为一,设置外键字段可以为空,也就是说关联的老师被删除该学生依然存在,只是相应字段留空

class Teacher(models.Model):
  name = models.CharField(max_length=10,verbose_name='老师名称')
  password = models.CharField(max_length=10,verbose_name='密码')
  class Meta:
    verbose_name_plural = '教师表'
  def __str__(self):
    return self.name
class Student(models.Model):
  teacher = models.ForeignKey(to=Teacher,on_delete=models.SET_NULL,null=True,verbose_name='教师')
  name = models.CharField(max_length=10,verbose_name='学生名字')
  age = models.IntegerField(verbose_name='年龄')
  class Meta:
    verbose_name_plural = '学生表'
  def __str__(self):
    return self.name

 teacher = models.Teacher.objects.get(pk=id) # id=id的某位老师
students = teacher.student_set.all() # 以一表反向查询多表,查询这位老师的学生

此时,all()返回的是一个结果集。<QuerySet [<Student: 学生1>, <Student: 学生22>, <Student: 学生3>, <Student: 学生44>]>

这里要将这个结果传给前端ajax需要先将其转成json格式,但是这样的一个结果集又不能使用json.dumps的。

我的方法是先给它转成列表嵌套字典再进行序列化操作

def index(request):
  if request.method == "GET":
    teacher_name = request.session.get('name')
    teacher = models.Teacher.objects.get(name=teacher_name)
    students = teacher.student_set.all()
    print(students)
    list = []
    for i in students:
      json_dict = {}
      json_dict['name'] = i.name
      json_dict['age'] = i.age
      list.append(json_dict)
    return JsonResponse(list,safe=False)  # 这里safe默认为True,只接受参数为dict字典类型,非dict类型---“报错:In order to allow non-dict objects to be serialized set the safe parameter to False.” safe=False之后list列表, tuple元祖, set集合就都可以

前端ajax接收参数,并且循环变量当前传过去的列表

$('#submit2').click(function(){
      $.ajax({
        url:'/app1/index/',
        type:'GET',
        success:function(res){
          console.log(res)
          var str = ''
          for(var i = 0; i < res.length; i++){     # js中的for循环
            str += '<li>' + res[i]['name'] + '</li>'
            }
            $('#students').html(str)          
        }
      })      

    })

渲染效果如下图所示

Django数据结果集序列化并展示实现过程

 <button id="submit2">点击查看我的学生</button>
<p id="students"></p>

就是这个小小的按钮,竟然在背后做了这么多事情,使得我们要的信息成功的展示在了下面的标签里[/code]

所以任何一份职业都不容易,没有小角色,都是大人物

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python threading多线程编程实例
Sep 18 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Flask框架配置与调试操作示例
Jul 23 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
python实现两个文件夹的同步
Aug 29 Python
jupyter 导入csv文件方式
Apr 21 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
python实现简单石头剪刀布游戏
Oct 24 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
Apr 07 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 #Python
TensorFlow使用Graph的基本操作的实现
Apr 22 #Python
如何在django中运行scrapy框架
Apr 22 #Python
TensorFlow实现批量归一化操作的示例
Apr 22 #Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 #Python
python实现四人制扑克牌游戏
Apr 22 #Python
如何在django中实现分页功能
Apr 22 #Python
You might like
php下删除字符串中HTML标签的函数
2008/08/27 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
JavaScript File分段上传
2016/03/10 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
python3大文件解压和基本操作
2017/12/15 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
python如何调用字典的key
2020/05/25 Python
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
主治医师岗位职责
2013/12/10 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
大学新闻系自荐书
2014/05/31 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
护士2015年终工作总结
2015/04/29 职场文书
孙振耀退休感言
2015/08/01 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python