feat: add CityArea

This commit is contained in:
XIE7654
2025-10-13 20:38:58 +08:00
parent a86f0c7174
commit e0ff8955ce
4 changed files with 149 additions and 0 deletions

BIN
backend/data/省市区.xlsx Normal file

Binary file not shown.

View File

@@ -0,0 +1,35 @@
import pandas as pd
from django.core.management.base import BaseCommand
from system.models import CityArea
class Command(BaseCommand):
help = '导入省市区数据'
def handle(self, *args, **options):
file_path = 'data/省市区.xlsx' # 文件路径,根据实际情况调整
try:
# 读取 Excel 文件
excel_file = pd.ExcelFile(file_path)
df = excel_file.parse() # 假设只有一个工作表,如果有多个,需要调整
# 使用 bulk_create 进行批量导入
bulk_objects = []
for index, row in df.iterrows():
bulk_objects.append(CityArea(
prov_id=row['省份ID'],
prov_name=row['省份名称'],
city_id=row['城市ID'],
city_name=row['城市名称'],
area_id=row['地区ID'],
area_name=row['地区名称']
))
# 批量创建对象
CityArea.objects.bulk_create(bulk_objects, batch_size=1000)
self.stdout.write(self.style.SUCCESS('数据导入成功'))
except FileNotFoundError:
self.stdout.write(self.style.ERROR(f'文件 {file_path} 未找到'))
except KeyError as e:
self.stdout.write(self.style.ERROR(f'{e} 未找到'))

View File

@@ -0,0 +1,99 @@
# Generated by Django 5.2.1 on 2025-10-13 12:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("system", "0004_config"),
]
operations = [
migrations.CreateModel(
name="CityArea",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"remark",
models.CharField(
blank=True,
db_comment="备注",
help_text="备注",
max_length=256,
null=True,
verbose_name="备注",
),
),
(
"creator",
models.CharField(
blank=True,
db_comment="创建人",
help_text="创建人",
max_length=64,
null=True,
verbose_name="创建人",
),
),
(
"modifier",
models.CharField(
blank=True,
db_comment="修改人",
help_text="修改人",
max_length=64,
null=True,
verbose_name="修改人",
),
),
(
"update_time",
models.DateTimeField(
auto_now=True,
db_comment="修改时间",
help_text="修改时间",
null=True,
verbose_name="修改时间",
),
),
(
"create_time",
models.DateTimeField(
auto_now_add=True,
db_comment="创建时间",
help_text="创建时间",
null=True,
verbose_name="创建时间",
),
),
(
"is_deleted",
models.BooleanField(
db_comment="是否软删除",
default=False,
verbose_name="是否软删除",
),
),
("prov_id", models.IntegerField(verbose_name="省id")),
("prov_name", models.CharField(max_length=255, verbose_name="")),
("city_id", models.IntegerField(verbose_name="市id")),
("city_name", models.CharField(max_length=255, verbose_name="")),
("area_id", models.IntegerField(verbose_name="区id")),
("area_name", models.CharField(max_length=255, verbose_name="")),
],
options={
"verbose_name": "省市区",
"verbose_name_plural": "省市区",
"db_table": "system_city_area",
},
),
]

View File

@@ -329,3 +329,18 @@ class Config(CoreModel):
def __str__(self):
return f"{self.name}({self.key})"
class CityArea(CoreModel):
"""省市区模型"""
prov_id = models.IntegerField(verbose_name="省id")
prov_name = models.CharField(max_length=255, verbose_name="")
city_id = models.IntegerField(verbose_name="市id")
city_name = models.CharField(max_length=255, verbose_name="")
area_id = models.IntegerField(verbose_name="区id")
area_name = models.CharField(max_length=255, verbose_name="")
class Meta:
db_table = "system_city_area"
verbose_name = "省市区"
verbose_name_plural = verbose_name