diff --git a/city-manual/backend/regions/management/commands/import_china_regions.py b/city-manual/backend/regions/management/commands/import_china_regions.py new file mode 100644 index 0000000..c8d0a59 --- /dev/null +++ b/city-manual/backend/regions/management/commands/import_china_regions.py @@ -0,0 +1,346 @@ +from django.core.management.base import BaseCommand +from regions.models import Region + +class Command(BaseCommand): + help = '导入中国行政区划数据(省、市、县)' + + def handle(self, *args, **options): + self.stdout.write('开始导入中国行政区划数据...') + + total_count = 0 + province_count = 0 + city_count = 0 + county_count = 0 + + for province_code, province_data in CHINA_REGIONS.items(): + # 创建省 + province, created = Region.objects.get_or_create( + code=province_code, + defaults={ + 'name': province_data['name'], + 'level': province_data['level'], + 'parent': None, + } + ) + if created: + province_count += 1 + self.stdout.write(self.style.SUCCESS(f'✓ 创建省:{province.name}')) + total_count += 1 + + # 创建市 + for city_code, city_data in province_data.get('children', {}).items(): + city, created = Region.objects.get_or_create( + code=city_code, + defaults={ + 'name': city_data['name'], + 'level': city_data['level'], + 'parent': province, + } + ) + if created: + city_count += 1 + total_count += 1 + + # 创建县 + for county_code, county_data in city_data.get('children', {}).items(): + county, created = Region.objects.get_or_create( + code=county_code, + defaults={ + 'name': county_data['name'], + 'level': county_data['level'], + 'parent': city, + } + ) + if created: + county_count += 1 + total_count += 1 + + self.stdout.write(self.style.SUCCESS(f'\n✅ 导入完成!')) + self.stdout.write(f' 总计:{total_count} 个区域') + self.stdout.write(f' 省级:{province_count} 个') + self.stdout.write(f' 市级:{city_count} 个') + self.stdout.write(f' 县级:{county_count} 个') + + +# 中国行政区划数据(省、市、县) +CHINA_REGIONS = { + "110000": { + "name": "北京市", + "level": "province", + "children": { + "110100": { + "name": "北京市", + "level": "city", + "children": { + "110101": {"name": "东城区", "level": "county"}, + "110102": {"name": "西城区", "level": "county"}, + "110105": {"name": "朝阳区", "level": "county"}, + "110106": {"name": "丰台区", "level": "county"}, + "110107": {"name": "石景山区", "level": "county"}, + "110108": {"name": "海淀区", "level": "county"}, + "110109": {"name": "门头沟区", "level": "county"}, + "110111": {"name": "房山区", "level": "county"}, + "110112": {"name": "通州区", "level": "county"}, + "110113": {"name": "顺义区", "level": "county"}, + "110114": {"name": "昌平区", "level": "county"}, + "110115": {"name": "大兴区", "level": "county"}, + "110116": {"name": "怀柔区", "level": "county"}, + "110117": {"name": "平谷区", "level": "county"}, + "110118": {"name": "密云区", "level": "county"}, + "110119": {"name": "延庆区", "level": "county"}, + } + } + } + }, + "120000": { + "name": "天津市", + "level": "province", + "children": { + "120100": { + "name": "天津市", + "level": "city", + "children": { + "120101": {"name": "和平区", "level": "county"}, + "120102": {"name": "河东区", "level": "county"}, + "120103": {"name": "河西区", "level": "county"}, + "120104": {"name": "南开区", "level": "county"}, + "120105": {"name": "河北区", "level": "county"}, + "120106": {"name": "红桥区", "level": "county"}, + "120110": {"name": "东丽区", "level": "county"}, + "120111": {"name": "西青区", "level": "county"}, + "120112": {"name": "津南区", "level": "county"}, + "120113": {"name": "北辰区", "level": "county"}, + "120114": {"name": "武清区", "level": "county"}, + "120115": {"name": "宝坻区", "level": "county"}, + "120116": {"name": "滨海新区", "level": "county"}, + } + } + } + }, + "310000": { + "name": "上海市", + "level": "province", + "children": { + "310100": { + "name": "上海市", + "level": "city", + "children": { + "310101": {"name": "黄浦区", "level": "county"}, + "310104": {"name": "徐汇区", "level": "county"}, + "310105": {"name": "长宁区", "level": "county"}, + "310106": {"name": "静安区", "level": "county"}, + "310107": {"name": "普陀区", "level": "county"}, + "310109": {"name": "虹口区", "level": "county"}, + "310110": {"name": "杨浦区", "level": "county"}, + "310112": {"name": "闵行区", "level": "county"}, + "310113": {"name": "宝山区", "level": "county"}, + "310114": {"name": "嘉定区", "level": "county"}, + "310115": {"name": "浦东新区", "level": "county"}, + "310116": {"name": "金山区", "level": "county"}, + "310117": {"name": "松江区", "level": "county"}, + "310118": {"name": "青浦区", "level": "county"}, + "310120": {"name": "奉贤区", "level": "county"}, + "310151": {"name": "崇明区", "level": "county"}, + } + } + } + }, + "440000": { + "name": "广东省", + "level": "province", + "children": { + "440100": { + "name": "广州市", + "level": "city", + "children": { + "440103": {"name": "荔湾区", "level": "county"}, + "440104": {"name": "越秀区", "level": "county"}, + "440105": {"name": "海珠区", "level": "county"}, + "440106": {"name": "天河区", "level": "county"}, + "440111": {"name": "白云区", "level": "county"}, + "440112": {"name": "黄埔区", "level": "county"}, + "440113": {"name": "番禺区", "level": "county"}, + "440114": {"name": "花都区", "level": "county"}, + "440115": {"name": "南沙区", "level": "county"}, + "440117": {"name": "从化区", "level": "county"}, + "440118": {"name": "增城区", "level": "county"}, + } + }, + "440300": { + "name": "深圳市", + "level": "city", + "children": { + "440303": {"name": "罗湖区", "level": "county"}, + "440304": {"name": "福田区", "level": "county"}, + "440305": {"name": "南山区", "level": "county"}, + "440306": {"name": "宝安区", "level": "county"}, + "440307": {"name": "龙岗区", "level": "county"}, + "440308": {"name": "盐田区", "level": "county"}, + "440309": {"name": "龙华区", "level": "county"}, + "440310": {"name": "坪山区", "level": "county"}, + "440311": {"name": "光明区", "level": "county"}, + } + }, + "440400": { + "name": "珠海市", + "level": "city", + "children": { + "440402": {"name": "香洲区", "level": "county"}, + "440403": {"name": "斗门区", "level": "county"}, + "440404": {"name": "金湾区", "level": "county"}, + } + }, + "440600": { + "name": "佛山市", + "level": "city", + "children": { + "440604": {"name": "禅城区", "level": "county"}, + "440605": {"name": "南海区", "level": "county"}, + "440606": {"name": "顺德区", "level": "county"}, + "440607": {"name": "三水区", "level": "county"}, + "440608": {"name": "高明区", "level": "county"}, + } + }, + } + }, + "330000": { + "name": "浙江省", + "level": "province", + "children": { + "330100": { + "name": "杭州市", + "level": "city", + "children": { + "330102": {"name": "上城区", "level": "county"}, + "330105": {"name": "拱墅区", "level": "county"}, + "330106": {"name": "西湖区", "level": "county"}, + "330108": {"name": "滨江区", "level": "county"}, + "330109": {"name": "萧山区", "level": "county"}, + "330110": {"name": "余杭区", "level": "county"}, + "330111": {"name": "富阳区", "level": "county"}, + "330112": {"name": "临安区", "level": "county"}, + } + }, + "330200": { + "name": "宁波市", + "level": "city", + "children": { + "330203": {"name": "海曙区", "level": "county"}, + "330205": {"name": "江北区", "level": "county"}, + "330206": {"name": "北仑区", "level": "county"}, + "330211": {"name": "镇海区", "level": "county"}, + "330212": {"name": "鄞州区", "level": "county"}, + } + }, + } + }, + "320000": { + "name": "江苏省", + "level": "province", + "children": { + "320100": { + "name": "南京市", + "level": "city", + "children": { + "320102": {"name": "玄武区", "level": "county"}, + "320104": {"name": "秦淮区", "level": "county"}, + "320105": {"name": "建邺区", "level": "county"}, + "320106": {"name": "鼓楼区", "level": "county"}, + "320111": {"name": "浦口区", "level": "county"}, + "320113": {"name": "栖霞区", "level": "county"}, + "320115": {"name": "江宁区", "level": "county"}, + } + }, + "320500": { + "name": "苏州市", + "level": "city", + "children": { + "320505": {"name": "虎丘区", "level": "county"}, + "320506": {"name": "吴中区", "level": "county"}, + "320507": {"name": "相城区", "level": "county"}, + "320508": {"name": "姑苏区", "level": "county"}, + "320509": {"name": "吴江区", "level": "county"}, + } + }, + } + }, + "500000": { + "name": "重庆市", + "level": "province", + "children": { + "500100": { + "name": "重庆市", + "level": "city", + "children": { + "500101": {"name": "万州区", "level": "county"}, + "500102": {"name": "涪陵区", "level": "county"}, + "500103": {"name": "渝中区", "level": "county"}, + "500104": {"name": "大渡口区", "level": "county"}, + "500105": {"name": "江北区", "level": "county"}, + "500106": {"name": "沙坪坝区", "level": "county"}, + "500107": {"name": "九龙坡区", "level": "county"}, + "500108": {"name": "南岸区", "level": "county"}, + "500109": {"name": "北碚区", "level": "county"}, + "500110": {"name": "綦江区", "level": "county"}, + } + } + } + }, + "510000": { + "name": "四川省", + "level": "province", + "children": { + "510100": { + "name": "成都市", + "level": "city", + "children": { + "510104": {"name": "锦江区", "level": "county"}, + "510105": {"name": "青羊区", "level": "county"}, + "510106": {"name": "金牛区", "level": "county"}, + "510107": {"name": "武侯区", "level": "county"}, + "510108": {"name": "成华区", "level": "county"}, + "510112": {"name": "龙泉驿区", "level": "county"}, + "510113": {"name": "青白江区", "level": "county"}, + "510114": {"name": "新都区", "level": "county"}, + } + }, + } + }, + "420000": { + "name": "湖北省", + "level": "province", + "children": { + "420100": { + "name": "武汉市", + "level": "city", + "children": { + "420102": {"name": "江岸区", "level": "county"}, + "420103": {"name": "江汉区", "level": "county"}, + "420104": {"name": "硚口区", "level": "county"}, + "420105": {"name": "汉阳区", "level": "county"}, + "420106": {"name": "武昌区", "level": "county"}, + "420107": {"name": "青山区", "level": "county"}, + "420111": {"name": "洪山区", "level": "county"}, + } + }, + } + }, + "610000": { + "name": "陕西省", + "level": "province", + "children": { + "610100": { + "name": "西安市", + "level": "city", + "children": { + "610102": {"name": "新城区", "level": "county"}, + "610103": {"name": "碑林区", "level": "county"}, + "610104": {"name": "莲湖区", "level": "county"}, + "610111": {"name": "灞桥区", "level": "county"}, + "610112": {"name": "未央区", "level": "county"}, + "610113": {"name": "雁塔区", "level": "county"}, + } + }, + } + }, +}