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. c++ 输入split

    日期格式为“yyyy/mm/dd”(即年/月/日)格式 scanf("%d/%d/%d", &year, &month, &day);

  2. opencv approxPolyDP使用

    代码: import cv2 import numpy as np # img = cv2.imread('/home/sensetime/edgeBoxes-Cpp-version/output/i ...

  3. java设计模式——建造者模式

    一. 定义与类型 定义:将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 用户只需制定需要建造的类型就可以得到它们,建造过程以及细节不需要知道 类型:创建型 建造者模式与工厂模 ...

  4. 自动布局之-NSLayoutConstraint

    AutoLayout概念是苹果自iOS6开始引入的概念. 目前为止,实现自动布局技术选型方面也可以使用xib和storyboard.在开发过程中通常登录.注册等变动可能性较小的视图,我会采用xib开发 ...

  5. macOS如何正确驱动集成显卡HDMI(包括视频和音频)

    聊聊如何正确驱动集成显卡HDMI(包括视频和音频)必备条件:1.必须使用AppleHDA驱动声卡(仿冒.clover.applealc都可以的),使用voodoo驱动声卡应该不行的.2.dsdt或者s ...

  6. VM内存溢出

    平常开发时,有的人会运行的同时,会改代码,可能会导致VM内存溢出 Eclipse需要设置如下步骤: 1.点击Run>Run Configurations.. 2.定位到Tomcat(自己本地配置 ...

  7. 十七、MySQL UNION 操作符

    MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多 ...

  8. Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本

    Shell脚本使用汇总整理——mysql数据库5.7.8以后备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...

  9. 15.VUE学习之-表单中使用key唯一令牌解决表单值混乱问题

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. python3:判断手机的亮屏状态

    在用python对手机做一些自动化操作时,常常会判断手机的亮屏状态,知晓手机的亮屏状态后才好做进一步的动作,如给屏幕解锁等.  用于了解手机的亮屏情况,有一个adb命令可用: adb shell du ...