Django. Выполнение функции при добавлении модели
Задача такая: есть файл excel, который ежемесячно необходимо загружать и данные из этого файла должны перетекать в модельку X.
Как я увидел решение: я создал отдельную модель с одним полем FileField, туда загружается Excel. Затем, добавил кнопку в админку, по которой последний файл обрабатывался и добавлял новые записи в Х.
Вопрос: где-то интуитивно я понимаю, что это похоже на самодел и должен быть метод, позволяющий при загрузке этого Excel-файла автоматически выполнять какую-то другую функцию.
Буду благодарен за помощь!
Ответы (1 шт):
Вы можете объявить необходимые при сохранении модели действия
# admin.py
from .models import ModelName
from django.contrib import admin
class SaveData(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
pass # вместо pass то, что нужно делать, когда модель сохраняется черед админку
super().save_model(request, obj, form, change)
admin.site.register(ModelName, SaveData)
При сохранении данных через админку Django будет вызываться метод save_model указанного дочернего для ModelAdmin класса (в данном случае - SaveData)
Это также можно оформить с использованием декоратора:
# admin.py
from .models import ModelName
from django.contrib import admin
@admin.register(ModelName)
class SaveData(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
pass # вместо pass то, что нужно делать, когда модель сохраняется черед админку
super().save_model(request, obj, form, change)