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)
Вернуться на верх