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框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python3.4爬虫demo
Jan 22 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
基于Tensorflow高阶读写教程
Feb 10 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python数据可视化图实现过程详解
Jun 12 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
Python 正则模块详情
Nov 02 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新手上路(十三)
2006/10/09 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
基于python中theano库的线性回归
2018/08/31 Python
django 中QuerySet特性功能详解
2019/07/25 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
如何基于python实现归一化处理
2020/01/20 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
Python hashlib模块的使用示例
2020/10/09 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
音乐教学随笔感言
2014/02/19 职场文书
国贸专业自荐信范文
2014/03/02 职场文书
毕业晚会主持词
2014/03/24 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
普宁寺导游词
2015/02/04 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
老人节主持词
2015/07/04 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers