Django admin получает обновленную модель (и обновленные родственные модели, которые являются инлайн) при нажатии кнопки "Сохранить"
У меня есть модель с именем User и у нее есть некоторые поля, а также некоторые относительные модели.
Он зарегистрирован на странице администратора, и некоторые из его относительных моделей зарегистрированы как его инлайны.
Теперь у меня есть функция, назовем ее update_api(user), которая принимает пользователя в качестве аргумента (который является экземпляром класса User) и отправляет его в API. Обратите внимание, что эта функция также использует относительные модели User.
Я хочу вызывать update_api, когда пользователь сохраняется на странице администратора, но я хочу, чтобы все его поля и относительные инлайн-модели были обновлены. Более того, я хочу, чтобы эта функция вызывалась только один раз за сохранение.
Я пробовал переопределить User.save() или UserAdmin.save_model(), но это ни к чему не привело, потому что связанные поля не были обновлены к тому времени.
Когда пользователь сохраняется через представление, я вызываю эту функцию вручную в конце после выполнения request.user.refresh_from_db().
Что решило мою проблему, так это размещение моего кода в методе UserAdmin.save_formset().
Похоже, что это последний метод, вызываемый из django после того, как пользователь отправит форму (по крайней мере, я так думаю).
Вот фрагмент кода:
class UserAdmin(admin.ModelAdmin):
model = User
def save_formset(self, request, form, formset, change):
super().save_formset(self, request, form, formset, change)
user = form.instance
update_api(user)