1、模型创建

models.py 自关联,获取下级的名称为next

from django.db import modelsclass Area(models.Model):"""区域表"""name = models.CharField(max_length=100, verbose_name='名称')parent = models.ForeignKey('self',on_delete=models.SET_NULL,related_name='son', null=True, verbose_name='父级')class Meta:db_table = 'tb_areas'def __str__(self):return self.name

2、插入数据

利用MySQL工具 以MySQL Workbench 8.0 CE为例插入数据

3、序列化器

serializer.py

class AreaSerializer(serializers.ModelSerializer):"""地址序列化器"""class Meta:model = Areafields = '__all__'

4、功能实现

views.py

from rest_framework.views import APIView
from rest_framework.response import Responsefrom .models import Area
from .serializer import AreaSerializerclass ObtailAreaView(APIView):def get(self, request):# 获取parent_id parent_id = request.GET.get('parent_id')# 如果获取到父级的id,则获取省级下面的信息(市、区、县)if parent_id:area = Area.objects.filter(pk=parent_id).first()areas = area.son# 如果没有参数,通过参数所有的省else:areas = Area.objects.filter(parent__isnull=True).all()area_ser = AreaSerializer(areas, many=True)# 返回结果return Response({'code': 200, 'areaList': area_ser.data})

5、配置路由

urls.py做了路由分发

"""
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.urls import path
from . import viewsurlpatterns = [path('area/', views.ObtailAreaView.as_view())
]

6、Vue页面功能(简单实现功能)

<template><div><h3>省市区三级联动演示</h3><div class="form_group"><label>所在地区:</label><select v-model='form.province' @change='getCity(form.province)'><option :value="i.id" v-for='i in province_list'>{{ i.name }}</option></select><select v-model='form.city' @change='getArea(form.city)'><option :value="i.id" v-for='i in city_list'>{{ i.name }}</option></select><select v-model='form.area'><option :value="i.id" v-for='i in area_list'>{{ i.name }}</option></select></div></div>
</template><script>export default {data() {return {form: {province: 110000,},province_list: [],city_list: [],area_list: []}},methods: {//获取省getProvice() {this.axios.get('address/area/').then(res => {console.log(res.data)this.province_list = res.data.areaList})},//获取市getCity(provice) {this.axios.get('address/area/?parent_id=' + provice).then(res => {this.city_list = res.data.areaList})},//获取区getArea(city) {this.axios.get('address/area/?parent_id=' + city).then(res => {this.area_list = res.data.areaList})},},mounted() {this.getProvice()}}
</script><style scoped>select {width: 125px;}
</style>

7、效果演示

8、总结

使用自关联,当省份改变的时候获取省份下面的区或市,当市改变的话获取市级下面的县、镇。

Django省市区三级联动相关推荐

  1. 微信小程序的省市区三级地址mysql_微信小程序picker实现的省市区三级联动

    微信小程序的省市区三级联动需要使用到的是Picker多列选择器,参考文档:https://www.w3cschool.cn/weix..., 案例中用到的省市区的json文件在文后发出出来. 废话不多 ...

  2. WheelView实现省市区三级联动(数据库实现版本号附带完整SQL及数据)

    近期在实现收货地址功能.用到了省市区三级联动效果.网上找到一般都是xml或json,数据源陈旧改动麻烦,改动了一下使用数据库方式实现了一下 数据源解决,因为数据量比較大通过初始化批量运行SQL的方式不 ...

  3. jQuery省市区三级联动插件

    体验效果:http://hovertree.com/texiao/bootstrap/4/ 支持PC和手机移动端. 手机扫描二维码体验效果: 代码如下: <!DOCTYPE html> & ...

  4. android仿ios城市选择,Android 省市区三级联动选择器(仿iOS滚轮实现)

    前言 在实际的项目中需要使用到省市区三级联动的功能,在网上找来找去,都没有找到一个合适的库, 所以自己就封装了一个,不需要自己添加数据源,直接引用即可,一行代码搞定城市选择.怎么简单,怎么方便,怎么来 ...

  5. java封装省市区三级json格式,2016中国省市区三级联动json格式.pdf

    2016中国省市区三级联动json格式 2016 年中国省市区三级联的JSON 格式 {"北京市":{"name":"北京市"," ...

  6. element vue 获取select 的label_vue+elementui实现省市区三级联动

    老大喊你起来营业了 醒醒,打工人!开始工作了,今天讲讲我的踩坑记录吧! 这次我们用的是vue-admin-webapp,基于 vue 和 element-ui 采用了最新的前端技术栈来开发一个管理系统 ...

  7. range 小程序picker_微信小程序-官方组件picker云开发省市区三级联动选择器

    早在一年多以前,我写过一篇微信小程序-省市区县三级联动选择器的文章,那时候小程序刚起步,网上找了很久没有相关的文献,官方也没有相关的组件,我就自己动手写了一个,也因为刚开始接触写的不是很好. 当时省市 ...

  8. 省市区三级联动 最新县及县以上行政区划代码 来源:国家统计局

    http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html jquery省市区三级联动(数据来源国家统计局官网)内附源码 ...

  9. vue省市区三级联动mysql,js/json,html/jsp

    大家好,我是烤鸭: 省市区三级联动数据及页面: 测试的时候,发现少了几个地区,现在补上了,也优化了下排版. 如果你懒得复制和看的话,这里是打包的下载地址. 之前的资源地址也改了,http://down ...

  10. element-ui省市区三级联动:选择即改变

    element-ui 省市区三级联动:选择即改变 注意: 阅读本文,经验传授: vue.js单组件引入外部或自定义的 .js文件,并调用文件内三级联动的 json数据: 自定义设置 默认地址,结合js ...

最新文章

  1. 010_JMS消息选择器
  2. 学习总结初篇:发现问题
  3. fastdfs上传文件时报错No route to host
  4. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](6)
  5. Navicat 9.1、10.0 简体中文最新版,注册码(For Mysql)
  6. mysql引号注入_MySql注入
  7. 感觉越来越多的人开始向往农村生活,你怎么看?
  8. Java 定制工具库 —— Print(import static)
  9. 光谱数据处理及定量分析
  10. 路径规划算法1.3抽样算法——PRM与RRT算法
  11. python之 十进制与十二进制 相互转换~clash of coding
  12. 赵小楼《天道》《遥远的救世主》深度解析(51)为什么芮小丹用脱衣这个方式来告白丁元英?
  13. 如何写投资项目计划书?
  14. 一篇荡气回肠的统计思想漫谈——漫谈相关与回归
  15. NoSQL Scylla Open Source 3.0食量比Cassandra大
  16. UML 有几种关系图标
  17. java持久化框架_众里寻他千百度-- 轻量级持久化框架-java-火龙果软件工程
  18. java中的进制转换(十进制和二进制)
  19. P2321 [HNOI2006]潘多拉的宝盒 题解
  20. 组建无线网络的六条思路

热门文章

  1. 小波神经网络模型的建立,小波神经网络模型matlab
  2. Extjs介绍及视频教程
  3. 基于XML的ASP留言板
  4. 批量导入手机通讯录_怎么批量导出联系人通讯录,华为手机通讯录转移如何操作?...
  5. 数据结构(严蔚敏版)与算法的实现(含全部代码)
  6. JS - javascript容错处理代码
  7. SQL Server 2016安装指南——针对“Microsoft R Open和Microsoft R Serve”提供解决经验
  8. android 消息循环滚动条,Android 电池电量进度条,上下滚动图片的进度条(battery)...
  9. AJAX培训第一讲:AJAX基础
  10. Linux镜像源 国内镜像列表