Есть ли способ сохранить дочерний класс модели с помощью pandas в методе save родительского класса модели при сохранении родительского класса модели в django

я хочу сохранить файл excel в класс модели и его детали в другой класс с помощью pandas, не используя pandas для этого в представлении

engine = create_engine('sqlite:///db.sqlite3')

class Excel(models.Model):
    name = models.CharField(max_length=150, unique=True)
    excel = models.FileField(upload_to=set_name_and_folder_file)

class ExcelDetail(models.Model):
    title = models.CharField(max_length=100)
    extract_excel = models.ForeignKey(ExtractExcel, on_delete=models.CASCADE, default=None)

@receiver(post_save, sender=ExtractExcel)
def my_save_handler(sender, **kwargs):
    instance = kwargs['instance']
    if instance.id is None:
        id__max = ExtractExcel.objects.aggregate(models.Max('id'))['id__max']
        if id__max is None:
            id__max = 0
        instance.id = id__max + 1
        
    df = pd.read_excel(
        rf'{instance.excel.path}')
    count_col = df.shape[0]
    df['extract_excel_id'] = [instance.id for i in range(count_col)]  
                         #above: to add a column named extract_excel_id to df for Foreign Key
    df.to_sql(ExcelDetail._meta.db_table, con=engine, index=true)

когда я сохраняю файл Excel в модель Excel с помощью администратора, появляется ошибка, которая выглядит следующим образом:

(sqlite3.OperationalError) база данных заблокирована [SQL: INSERT INTO extract_excel_file_exceldetail (title, extract_excel_id) VALUES (?, ?)] [параметры: ((1, 9), ('title2', 9), (4, 9), ('title4', 9), ('w', 9), ('w', 9), ('amir', 9), (12, 9))] (Справочная информация об этой ошибке на: https://sqlalche.me/e/14/e3q8)

написано "база данных заблокирована". Я думаю, что конфликт возник в соединении базы данных, которое находится между django и движком выше.

что мне делать?

Вернуться на верх