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修改Excel数据的实例代码
Nov 01 Python
Python函数嵌套实例
Sep 23 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
tensorflow如何批量读取图片
Aug 29 Python
通过实例解析Python调用json模块
Dec 11 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
python列表切片和嵌套列表取值操作详解
Feb 27 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 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
程序员编程十条戒律
2009/07/09 PHP
php中namespace use用法实例分析
2016/01/22 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
php7 新增功能实例总结
2020/05/25 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
js实现图片懒加载效果
2017/07/17 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
介绍一下RMI的基本概念
2016/12/17 面试题
食品安全宣传标语
2014/06/07 职场文书
党员一帮一活动总结
2014/07/08 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
初中重阳节活动总结
2015/05/05 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python