Django前端界面实现级联查询

一、前端界面中

<span scope="col" colspan="6">
院系:<select id="dept" name="deptid" class="select radius mr-10" style="width: 20%">
<option value="default" >请选择院系</option>
{% for dept in deptList %}
{% if deptid == dept.deptid %}
<option value="{{ dept.deptid }}" selected>{{ dept.deptname }}</option>
{% else %}
<option value="{{ dept.deptid }}">{{ dept.deptname }}</option>
{% endif %}
{% endfor %}
</select>
专业:<select id="major" name="majorid" class="select radius mr-10" style="width: 20%">
<option value="default" selected>请选择专业</option>
{% for major in majorList %}
{% if majorid == major.majorid %}
<option value="{{ major.majorid }}" selected>{{ major.majorname }}</option>
{% else %}
<option value="{{ major.majorid }}">{{ major.majorname }}</option>
{% endif %}
{% endfor %}
</select>
</span> $(function () {
// 改变院系后
$('#dept').change(function () {
var deptid = $("#dept").val();
// 清空专业
$("#major").empty().append('<option value="default">请选择专业</option>');
var majorid = $("#major").val();
// 跳转
window.location.href="{% url 'basic:getGrade' %}?deptid="+deptid+"&majorid="+majorid
});
// 改变专业后
$('#major').change(function () {
var deptid = $("#dept").val();
var majorid = $("#major").val();
// 跳转
window.location.href="{% url 'basic:getGrade' %}?majorid="+majorid+"&deptid="+deptid
});
})

二、views

def getGrade(request):
'''
获取到所有的班级信息(级联查询,应用分页)
:param request:
:return:
'''
deptid = request.GET.get('deptid') # 获取级联菜单中的院系id
majorid = request.GET.get('majorid') # 获取级联菜单中的专业id
current_page = request.GET.get('p', 1)
current_page = int(current_page) # 当前页
depts = models.TDept.objects.all() # 获取所有的院系信息
deptList = []
for dept in depts:
major = models.TMajor.objects.filter(dept=dept)
if major:
deptList.append(dept) # 获取到所有 有专业的 院系信息
majors = []
gradeList = []
if deptid == 'default' or deptid is None and majorid == 'default' or majorid is None: # 级联菜单无选项时
gradeList = models.TGrade.objects.all().order_by('gradeid')
elif deptid and majorid == 'default':
gradeList = models.TGrade.objects.filter(major__dept__deptid=deptid) # 级联菜单选择院系时
majors = models.TMajor.objects.filter(dept=deptid)
elif majorid:
gradeList = models.TGrade.objects.filter(major__majorid=majorid) # 级联菜单选择专业时
majors = models.TMajor.objects.filter(dept=deptid)
page_obj = pagination.Page(current_page, len(gradeList)) # 创建分页对象
data_len = page_obj.data_count # 获取总数据数量
pages = page_obj.page_pages # 获取总页数
data = gradeList[page_obj.start:page_obj.end] # 获取单页数据
page_str = page_obj.page_str('/basic/getGrade') # 传递base_url
return render(request,'bg/basic/listgrade.html',
{'gradeList':data,'data_len':data_len,'pages':pages,'page_str':page_str,
'current_page':current_page,'deptList':deptList,'majorList':majors,
'deptid':deptid,'majorid':majorid})

Django中前端界面实现级联查询的更多相关文章

  1. Oracle number类型前端界面和数据库查询不一致 number精度问题

    [发现问题] [问题分析] Ⅰ.在前端界面查询,发现了库存中存在这样的数量值.但是在数据库中查询时显示正常.即6.999999999999997 为 7. Ⅱ.至于这种小数产生,我以为是oracle存 ...

  2. 测试开发之Django——No4.Django中前端框架的配置与添加

    我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...

  3. Django中获取参数(路径,查询,请求头,请求体)

    一.通常HTTP协议向服务器传参有几种途径 : 提取URL的特定部分,如/weather/shanghai/2018,可以在服务器端的路由中用正则表达式截取: 查询字符串(query string), ...

  4. Django 中的select_related函数优化查询

    参考链接: https://blog.csdn.net/secretx/article/details/43964607 在数据库有外键的时候,使用select_related()和prefech_r ...

  5. Django中的ORM关系映射查询方面

    ORM:Object-Relation Mapping:对象-关系映射 在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处: 实现了数据模型与数据库的解耦,通过简单的配置就可 ...

  6. django中使用原生的sql查询实例

    在app文件夹下创建database_operations.py文件,写如下内容: import pymysql from 项目名.settings import DATABASES class Da ...

  7. django中Model表的反向查询

    很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询, 称为正向查询.反之,则是反向查询. 正向查询很简单,这里不谈. 主要谈下反向查询. class U ...

  8. Django中的许可(Permissions)和用户组(Group)

    Reference: http://www.cnblogs.com/esperyong/archive/2012/12/20/2826690.html 接着上面的3篇讨论文章,我们阐述了Django中 ...

  9. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ...

随机推荐

  1. centOS7虚拟机和本机ping通

    1.配置centOS虚拟机网卡 先设置桥接模式 此处的address要和本机的vmware在同一个网段 2.重启centOS网卡 3.关闭本机和虚拟机防火墙,防止ping不通 centOS命令: fi ...

  2. C++编写双向链表

    创建双向链表类,该类有默认构造函数.类的拷贝函数.类的.实现链表添加数据.升序排序.查找链表中某个节点及删除链表中某个节点的操作 代码实现: #include<iostream> #inc ...

  3. Android SDK下载OpenMobile api

    在Android SDK Manager的Tools -> Manager Add-on sites... -> User Defined Sites中,添加以下地址: http://se ...

  4. [UIImage imageWithContentsOfFile:@""] 内存警告

    You will want to use the [UIImage imageWithContentsOfFile:@""] method, as that doesn't cac ...

  5. JS判断单、多张图片加载完成

    转:http://www.daqianduan.com/6419.html 试想,如果模板中有图片,此时如何判断图片是否加载完成? 在此之前来了解一下jquery的ready与window.onloa ...

  6. .net core 2.2跨域session

    不说废话,直奔主题! 使用场景:微服务.前后端已经跨域.又不得不使用session 使用session的好处:此处省略若干字...... 做法: 客户端:该怎么写就怎么写. 服务端: Startup类 ...

  7. git与github账号建立SSH连接

    第1步:创建SSH Key.在用户主目录下,(就是在你的工作空间一层)看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步 ...

  8. 转载:java分布式服务框架Dubbo的介绍与使用

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  9. MySql学习笔记04

    复习 day01 数据库相关: create database db4 character set utf8; show databases; show create database db4; dr ...

  10. 嵌入式linux:通过qemu模拟mini2440开发环境

    1 编译安装QEMU 首先下载qemu for mini2440,直接打包下载 http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz  ...