前端部分: 三个下拉拉菜单进行级联

 <body>
<select id="province" >
<option value="">请选择省份</option>
</select>
<select id="city">
<option value="">请选择城市</option>
</select>
<select id="district">
<option value="">请选择区/县</option>
</select>
</body>

利用ajax进行get请求:

当改变省份的时候,将市和县的信息清空(可能会上一次选择省份再次选择省份会市后面数据多余),再利用ajax提交get获取当前省份下的城市,放入city中

当改变城市的时候,将县的信息清空(多次选择会产生数据多余),再利用ajax提交get获取当前城市下的所有区县放入district中

 $(function(){

 // 获取省份
$.get('/getProvince/',function(data){
for(var i = 0,len = data.provinces.length; i<len ;i++){
$new = $("<option value="+data.provinces[i][0] +">"+ data.provinces[i][1] +"</option>" );
$("#province").append( $new );
} }); //改变省份后
$("#province").change(function(){
//清空市和区
$("#city").empty().append('<option value="">请选择城市</option>');
$("#district").empty().append('<option value="">请选择区/县</option>');
$.ajax({
url:'/getCity/',
type:'get', data:{"city_id":$(this).val()}
}).done(function(data){
for(var i = 0,len = data.cities.length; i<len ;i++){
$new = $( "<option value="+data.cities[i][0] +">"+ data.cities[i][1] +"</option>" );
$("#city").append( $new );
}
});
}); //改变城市后
$("#city").change(function(){
//清空市和区
$("#district").empty().append('<option value="">请选择区/县</option>');
$.ajax({
url:'/getDistrict/',
type:'get',
data:{"district_id":$(this).val()}
}).done(function(data){
for(var i = 0,len = data.district.length; i<len ;i++){
$new = $( "<option value="+data.district[i][0] +">"+ data.district[i][1] +"</option>" );
$("#district").append($new );
}
});
}); })

后端部分:

views视图:

 # 级联菜单
def getAreas(request):
return render(request,'booktest/getAreas.html') #获得省份
def getProvince(request):
provinces = AreaInfo.objects.filter(aParent__isnull = True)
res = []
for i in provinces:
res.append( [i.id , i.atitle] )
return JsonResponse({'provinces':res}) #获得城市
def getCity(request):
city_id = request.GET.get('city_id')
cities = AreaInfo.objects.filter(aParent_id=city_id)
res = []
for i in cities:
res.append([i.id, i.atitle])
return JsonResponse({'cities':res}) #获得区 县
def getDistrict(request):
district_id = request.GET.get('district_id')
cities = AreaInfo.objects.filter(aParent_id=district_id)
res = []
for i in cities:
res.append([i.id, i.atitle])
return JsonResponse({'district': res})

模型部分:

 # 建立城市自关联数据库表
class AreaInfo(models.Model):
atitle = models.CharField(max_length=30)
aParent = models.ForeignKey('self',null=True,blank=True) def __str__(self):
return self.atitle class Meta:
db_table = 'areas' # 指定表名称

Django实现 省 市 县 自关联的下拉级联的更多相关文章

  1. Django分析之三级下拉菜单选择省/市/县

    今天遇到了一个一直想做却没有机会去做的功能,今天完成了便记录下来. 那这次是具体是个什么功能呢?其实还是很简单的效果,就是在用户注册的时候可以选择省/市/县,很简单的一个小功能. 那现在就开始了~首先 ...

  2. 【Python】django模型models的外键关联使用

    Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...

  3. 使用combobox下拉列表框实现省 市 县 的三级联动

    package com.hanqi.entity; //地区 public class Region { //地区id private String regionID; //地区名称 private ...

  4. Yii 1开发日记 -- 后台搜索功能下拉及关联表搜索

    Yii 1 实现后台搜索,效果如下: 一. 下拉搜索: 1.模型中和常规的一样 if (isset($_GET['agency']['status']) && $_GET['agenc ...

  5. [Django]下拉表单与模型查询

    前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ...

  6. 联合县城市,采用ajax,而使用ul模拟select下拉

    接待处代码 js //采用jquery展示鼠标放到省ul下拉显示 $("#province").hover(function(){                          ...

  7. django 下拉菜单显示为object的解决办法

    在创建完Django数据库结构之后,使用Django自带的强大的admin功能往数据库中添加数据,图形化界面如下: 但时候有下拉框选项(只要在model中有定义Charfield就会显示为下拉框),如 ...

  8. Django forms表单 select下拉框的传值

    今儿继续做项目,学习了Django的forms生成前端的代码. forms.py class SignupForm(forms.Form): username = forms.CharField(va ...

  9. js下拉框二级关联菜单效果代码具体实现

    这篇文章介绍了js下拉框二级关联菜单效果代码具体实现,有需要的朋友可以参考一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

随机推荐

  1. [POJ 3635] Full Tank?

    题目 Description 已知每个点的加油站的油价单价(即点权),每条路的长度(边权). 有q个询问,每个询问包括起点s.终点e和油箱容量c. 问从起点走到终点的最小花费.如果不可达输出impos ...

  2. dataTable插件的使用

    var table; table = $("#example").dataTable({ "sDom": "<'top'f<'clear' ...

  3. shell基本命令学习

    Shell是一种脚步语言,那么,就必须有解释器来执行这些脚步. Unix/Linux上常见的shell脚步解释器有bash,sh,csh,ksh等,习惯把它们称为shell. 例如: #!/bin/b ...

  4. MIP (百度移动网页加速器)

    前言:第一次用移动网页加速器,感觉好心情都被弄坏了.确实性能提高了不少,但是限制js,对于一些交互实现都成问题.MIP是Mobile Instant Pages的缩写,指百度移动网页加速器, 是一套应 ...

  5. STL --> vector向量

    vector向量 vector是一种对象实体,能够容纳许多其他类型相同的元素,因为又被称为容器. 头文件 在使用它时,需要包含头文件 <vector>. #include <vect ...

  6. [git 实践篇]如何创建公钥

    如何创建公钥 首先启动一个Git Bash窗口(非Windows用户直接打开终端) 执行: cd ~/.ssh 如果返回"- No such file or directory", ...

  7. linux挂载windows共享文件夹

    1.建立共享文件夹 2.在linux中挂载共享目录 #mount -t cifs -o username=administrator,password=你的系统账号密码 //192.168.0.22/ ...

  8. supervisor进程管理工具的使用

    supervisor是一款进程管理工具,当想让应用随着开机启动,或者在应用崩溃之后自启动的时候,supervisor就派上了用场. 广泛应用于服务器中,用于引导控制程序的启动 安装好superviso ...

  9. C语言博客作业--函数 陈张鑫

    一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...

  10. 【Alpha版本】冲刺阶段 - Day1 - 启航

    Alpha 阶段成员分工及任务量 成员 分工 任务量(小时) 袁逸灏 完成app用户车辆,子弹发射,背景移动,暂停界面,音乐界面,音乐查找,音乐播放 25 刘伟康 项目进度把控.分配任务.组织会议.整 ...