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实现的递归神经网络简单示例
Aug 11 Python
python中set()函数简介及实例解析
Jan 09 Python
python中for用来遍历range函数的方法
Jun 08 Python
python 字典中取值的两种方法小结
Aug 02 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
Python如何将装饰器定义为类
Jul 30 Python
使用Django的JsonResponse返回数据的实现
Jan 15 Python
python游戏开发Pygame框架
Apr 22 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
python中xrange和range的区别
2014/05/13 Python
Python中tell()方法的使用详解
2015/05/24 Python
python比较两个列表是否相等的方法
2015/07/28 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
python八大排序算法速度实例对比
2017/12/06 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
医院辞职信范文
2014/01/17 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
初中作文评语大全
2014/04/23 职场文书
授权委托书范文
2014/07/31 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
公司员工离职证明书
2014/10/04 职场文书
伏羲庙导游词
2015/02/09 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL