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的web框架中编写创建日志的程序的教程
Apr 30 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Numpy数组的保存与读取方法
Apr 04 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
Django框架表单操作实例分析
Nov 04 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python 三种方法实现对Excel表格的读写
Nov 19 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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
Dojo 学习要点
2010/09/03 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
JS截取字符串实例详解
2015/11/24 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
python logging.info在终端没输出的解决
2020/05/12 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python网页解析器使用实例详解
2020/05/30 Python
增大python字体的方法步骤
2020/07/05 Python
介绍一下Linux中的链接
2016/06/05 面试题
幼儿园消防安全制度
2014/01/26 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
政府门卫岗位职责
2014/04/29 职场文书
个人求职自荐信范文
2014/06/20 职场文书
应届生找工作求职信
2014/06/24 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
刑事和解协议书范本
2014/11/19 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
工程款申请报告
2015/05/15 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS