dormitory.management.commands.import_dormitory 源代码
import pandas as pd
from django.core.management.base import BaseCommand
from tqdm import tqdm
from dormitory.models import Dormitory
# 导入宿舍信息,包括宿舍号、容量(4)、性别。
[文档]
class Command(BaseCommand):
help = 'Imports dormitory data'
[文档]
def add_arguments(self, parser):
parser.add_argument('excel_file', type=str,
help='Path to the Excel file')
[文档]
def handle(self, *args, **options):
excel_file = options['excel_file']
try:
df_raw = pd.read_excel(excel_file)
except Exception as e:
self.stdout.write(self.style.ERROR(
f'Error reading Excel file: {e}'))
return
df_dorms = df_raw.groupby('宿舍号')
for dorm_id, df in tqdm(df_dorms):
gender = pd.unique(df['性别'])
assert len(gender) == 1, len(gender)
_, created = Dormitory.objects.get_or_create(
id=dorm_id,
capacity=4,
gender={"男": 0, "女": 1}[gender[0]]
)
if not created:
gender_dict = {'男': 'male', '女': 'female'}
print(
f"Dormitory {dorm_id} already exists. Its capacity is 4 and it's a {gender_dict[gender[0]]} dormitory")