dormitory.management.commands.import_dormitory_assignment 源代码

import pandas as pd
from django.core.management.base import BaseCommand
from tqdm import tqdm

from dormitory.models import Dormitory, DormitoryAssignment
from generic.models import User


# 导入宿舍信息,包括宿舍号、容量(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): dormitory = Dormitory.objects.get(id=dorm_id) for i in range(len(df)): user = User.objects.get(username=df.iloc[i]["学号"]) bed_id = int(df.iloc[i]["床位"]) _, created = DormitoryAssignment.objects.get_or_create( dormitory=dormitory, user=user, bed_id=bed_id ) if not created: print( f"This dormitory assignment entity already exists. Info: Dormitory id {dormitory.id}, user {user}, bed id {bed_id}.")