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提取html文件中的特定数据的实现代码
Mar 24 Python
使用python 获取进程pid号的方法
Mar 10 Python
python实现绘制树枝简单示例
Jul 24 Python
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
Golang与python线程详解及简单实例
Apr 27 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
快速查询Python文档方法分享
Dec 27 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python简易远程控制单线程版
Jun 20 Python
pandas.read_csv参数详解(小结)
Jun 21 Python
Django REST framework 限流功能的使用
Jun 24 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
php常用的url处理函数总结
2014/11/19 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python日志模块logging简介
2015/04/13 Python
Python编程入门的一些基本知识
2015/05/13 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Python类中self参数用法详解
2020/02/13 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
办公自动化专业大学生职业规划书
2014/03/06 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
月考总结与反思
2015/10/22 职场文书