Django实现 省 市 县 自关联的下拉级联
前端部分: 三个下拉拉菜单进行级联
<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实现 省 市 县 自关联的下拉级联的更多相关文章
- Django分析之三级下拉菜单选择省/市/县
		今天遇到了一个一直想做却没有机会去做的功能,今天完成了便记录下来. 那这次是具体是个什么功能呢?其实还是很简单的效果,就是在用户注册的时候可以选择省/市/县,很简单的一个小功能. 那现在就开始了~首先 ... 
- 【Python】django模型models的外键关联使用
		Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ... 
- 使用combobox下拉列表框实现省 市  县 的三级联动
		package com.hanqi.entity; //地区 public class Region { //地区id private String regionID; //地区名称 private ... 
- Yii 1开发日记  --  后台搜索功能下拉及关联表搜索
		Yii 1 实现后台搜索,效果如下: 一. 下拉搜索: 1.模型中和常规的一样 if (isset($_GET['agency']['status']) && $_GET['agenc ... 
- [Django]下拉表单与模型查询
		前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ... 
- 联合县城市,采用ajax,而使用ul模拟select下拉
		接待处代码 js //采用jquery展示鼠标放到省ul下拉显示 $("#province").hover(function(){ ... 
- django 下拉菜单显示为object的解决办法
		在创建完Django数据库结构之后,使用Django自带的强大的admin功能往数据库中添加数据,图形化界面如下: 但时候有下拉框选项(只要在model中有定义Charfield就会显示为下拉框),如 ... 
- Django forms表单 select下拉框的传值
		今儿继续做项目,学习了Django的forms生成前端的代码. forms.py class SignupForm(forms.Form): username = forms.CharField(va ... 
- js下拉框二级关联菜单效果代码具体实现
		这篇文章介绍了js下拉框二级关联菜单效果代码具体实现,有需要的朋友可以参考一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ... 
随机推荐
- 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 ... 
- 设计模式——工厂方法模式(C++实现)
			#include <iostream> #include <string> using namespace std; class CProduct { public: ; }; ... 
- kubernetes关键概念总结
			service 每个service对应一个cluster IP,cluster IP对应的服务网段最初是在配置kube-apiserver.kube-controller-manager和kube-p ... 
- 多个input连接在一起的时候如何实现输入一个数字跳入下一个
			这个是页面内容 ,我分了12格子,作为一个12位的会员卡号的输入;其实就是12个input我把他们放在了一个div里面 这样配上背景图,看着是一个大的输入框. <div id="A ... 
- Mycat 分片规则详解--应用指定分片
			实现方式:根据字符串的子串(必须是数字)计算分区号(由调用方传递参数,显示指定分区号),例如,id=05-12232323,其中 id 是从 startIndex = 0,size=2,即截取的子串是 ... 
- 笔记:MyBatis 日志显示-log4j2
			在ClassPath路径创建log4j2.xml配置文件,增加如下日志配置: <?xml version="1.0" encoding="UTF-8"?& ... 
- Android学习笔记1——开发环境配置
			一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ... 
- table 表格的增删和修改
			如上图,图片的增删都没有问题:唯一的问题就是我改变下一行的内容时,把上面一行给覆盖了,费了好久,终于找到原因了,直接贴代码: 效果如下: 
- c++ --> 变量、常量与运算符
			变量.常量与运算符 一.什么是变量? 在计算机的内存中, 内存被划分为一个一个的内存单元, 每个内存单元有自己的编号, 而变量就是对某一段连续内存单元使用一些更容易记忆.更容易区分的字符组合 ... 
- 【源码分析】你必须知道的string.IsNullOrEmpty && string.IsNullOrWhiteSpace
			写在前面 之前自信撸码时踩了一次小坑,代码如下: private static void AppServer_NewMessageReceived(WebSocketSession session, ... 
