У меня есть такие модели:
class NameReplacements(models.Model):
excel_file = models.FileField(upload_to='excel_files')
class NameReplacement(models.Model):
name_to_replace = models.CharField(max_length=255, default='')
name_to_replace_with = models.CharField(max_length=255, default='')
Я загружаю файл для NameReplacements
через административную панель.
В другом месте моего приложения у меня есть код, который читает файл из последнего экземпляра этой модели и сохраняет данные из каждой строки этого файла как NameReplacement
экземпляр:
def remove_old_name_replacements():
'''Removes all instances of NameReplacement from database'''
replacements = NameReplacement.objects.all()
replacements.delete()
def import_name_replacements():
'''Imports name replacements to database from last uploaded Excel file'''
remove_old_name_replacements()
replacements = NameReplacements.objects.last()
df = pd.read_excel(replacements.excel_file.path)
for i in range(len(df)):
name_to_replace=str(df.loc[i, 'managers']),
name_to_replace_with=str(df.loc[i, 'best_matches'])
name_replacement = NameReplacement(name_to_replace, name_to_replace_with)
name_replacement.save()
В настоящее время я просто запускаю import_name_replacements
вручную из оболочки Django всякий раз, когда загружаю новый файл.
Есть ли способ указать Django запускать этот код автоматически всякий раз, когда я загружаю файл через панель администратора?