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

 <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. C++调用C方法

    //1,编译静态库 libtest.a gcc -c test.c -o test.o ar rc libtest.a test.o //2,编译main函数 g++ -o main main.cpp ...

  2. 设计模式——工厂方法模式(C++实现)

    #include <iostream> #include <string> using namespace std; class CProduct { public: ; }; ...

  3. kubernetes关键概念总结

    service 每个service对应一个cluster IP,cluster IP对应的服务网段最初是在配置kube-apiserver.kube-controller-manager和kube-p ...

  4. 多个input连接在一起的时候如何实现输入一个数字跳入下一个

    这个是页面内容  ,我分了12格子,作为一个12位的会员卡号的输入;其实就是12个input我把他们放在了一个div里面  这样配上背景图,看着是一个大的输入框. <div id="A ...

  5. Mycat 分片规则详解--应用指定分片

    实现方式:根据字符串的子串(必须是数字)计算分区号(由调用方传递参数,显示指定分区号),例如,id=05-12232323,其中 id 是从 startIndex = 0,size=2,即截取的子串是 ...

  6. 笔记:MyBatis 日志显示-log4j2

    在ClassPath路径创建log4j2.xml配置文件,增加如下日志配置: <?xml version="1.0" encoding="UTF-8"?& ...

  7. Android学习笔记1——开发环境配置

    一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ...

  8. table 表格的增删和修改

    如上图,图片的增删都没有问题:唯一的问题就是我改变下一行的内容时,把上面一行给覆盖了,费了好久,终于找到原因了,直接贴代码: 效果如下:

  9. c++ --> 变量、常量与运算符

    变量.常量与运算符   一.什么是变量?    在计算机的内存中, 内存被划分为一个一个的内存单元, 每个内存单元有自己的编号, 而变量就是对某一段连续内存单元使用一些更容易记忆.更容易区分的字符组合 ...

  10. 【源码分析】你必须知道的string.IsNullOrEmpty && string.IsNullOrWhiteSpace

    写在前面 之前自信撸码时踩了一次小坑,代码如下: private static void AppServer_NewMessageReceived(WebSocketSession session, ...