Есть ли способ сохранить дочерний класс модели с помощью 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 и движком выше.
что мне делать?