Django中前端界面实现级联查询
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中前端界面实现级联查询的更多相关文章
- Oracle number类型前端界面和数据库查询不一致 number精度问题
[发现问题] [问题分析] Ⅰ.在前端界面查询,发现了库存中存在这样的数量值.但是在数据库中查询时显示正常.即6.999999999999997 为 7. Ⅱ.至于这种小数产生,我以为是oracle存 ...
- 测试开发之Django——No4.Django中前端框架的配置与添加
我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...
- Django中获取参数(路径,查询,请求头,请求体)
一.通常HTTP协议向服务器传参有几种途径 : 提取URL的特定部分,如/weather/shanghai/2018,可以在服务器端的路由中用正则表达式截取: 查询字符串(query string), ...
- Django 中的select_related函数优化查询
参考链接: https://blog.csdn.net/secretx/article/details/43964607 在数据库有外键的时候,使用select_related()和prefech_r ...
- Django中的ORM关系映射查询方面
ORM:Object-Relation Mapping:对象-关系映射 在MVC框架中的Model模块中都包括ORM,对于开发人员主要带来了如下好处: 实现了数据模型与数据库的解耦,通过简单的配置就可 ...
- django中使用原生的sql查询实例
在app文件夹下创建database_operations.py文件,写如下内容: import pymysql from 项目名.settings import DATABASES class Da ...
- django中Model表的反向查询
很多时候需要在多张表之间进行跨表查询,这其中外键是必须存在的,而通过外键所处的表的对象进行跨表查询, 称为正向查询.反之,则是反向查询. 正向查询很简单,这里不谈. 主要谈下反向查询. class U ...
- Django中的许可(Permissions)和用户组(Group)
Reference: http://www.cnblogs.com/esperyong/archive/2012/12/20/2826690.html 接着上面的3篇讨论文章,我们阐述了Django中 ...
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ...
随机推荐
- mysql服务器系统优化
1.选择合适的IO调度 对于mysql的系统,如果是SSD,那么应该使用NOOP调度算法,如果是磁盘,就应该使用Deadline调度算法.默认是CFQ echo dealine > /sys/b ...
- UOJ#130 【NOI2015】荷马史诗 K叉哈夫曼树
[NOI2015]荷马史诗 链接:http://uoj.ac/problem/130 因为不能有前缀关系,所以单词均为叶子节点,就是K叉哈夫曼树.第一问直接求解,第二问即第二关键字为树的高度. #in ...
- JS encodeURIComponent函数
为了避免歧义,可以用JS 的encodeURIComponent函数 将有歧义的字符(?+=等)转换成对应的ASCII编码 for(var i=0;i<whichform.elements.l ...
- 项目开发中dev、test和prod是什么意思
开发环境(dev):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告. 测试环境(test):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常 ...
- 将bat批处理文件注册成windows服务
C:\Users\lenovo>sc create MyService binPath= "C:\Program Files\restartOracle.bat" type ...
- RabbitMQ使用教程(五)如何保证队列里的消息99.99%被消费?
1. 前情回顾 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置 RabbitMQ使用 ...
- java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。
package com.swift; import java.util.Scanner; public class Hanzi_jiequ { public static void main(Stri ...
- CURLOPT_PROGRESSFUNCTION
Author:李强(李祥祥) Date :2012-12-15 17:26 LIBCURL官方网站都没有说清楚道明白进度函数的参数的作用,这点我感觉文档很片面,经总结如下: size_t CUpl ...
- ElasticSearch High Level REST API【1】文档基本操作
获取ES客户端 ES的提供了四种Java客户端,分别为节点客户端(node client).传输客户端(Transport Client).低级REST客户端.高级REST客户端. 节点客户端作为集群 ...
- k8s基于RBAC的访问控制(用户授权)
kubernetes的API Server常用的授权插件有: Node.ABAC.RBAC.Webhook我们重点说一下RBAC的访问控制逻辑RBAC(Role base access contr ...