Django - Подключение к сигналу post_init только на форме изменения модели

Я хотел бы использовать сигнальное соединение post_init на экземпляре модели для вызова удаленного API, который будет получать некоторые данные, а затем использовать их в качестве своего рода динамического свойства модели, которое присваивается этому экземпляру при загрузке формы изменений.

В частности, у меня есть другая система, использующая совершенно другой фреймворк, которая имеет модель, которая (в основном) такая же, как модель, которую я имею в Django. Сигнал post_init должен проверить удаленную версию на наличие сохраненных в ней изображений, а затем присвоить этот булево значение в качестве динамического свойства модели экземпляру модели Django.

Это даст мне условие для проверки во время сигнала модели post_save, которое я смогу использовать, чтобы определить, нужно ли мне загружать изображения на удаленную модель или нет.

Поскольку это будет вызов удаленной системы, я не хочу, чтобы вызов API в post_init вызывался для каждого экземпляра модели при загрузке страницы списка моделей администратора, я хочу, чтобы это происходило только на форме изменения.

Как я могу исключить этот дорогостоящий вызов API из всех post_init сигналов, кроме тех, когда он запускается из формы изменения администратора экземпляра модели?

Если я правильно вас понял, вам нужно сделать вызов API, когда испускается post_save. У вас есть возможность проверить, создан ли экземпляр или обновлен.

@receiver(post_save, sender=Your Model)
def upload_image(sender, instance, created, **kwargs):
    try:
        #This will check if the instance is created or updated
        if created:
            #upload the image or do any api calls
            #update your dynamic field on the instance
    except Exception as e:
        print(e)

Таким образом, вы сделаете только один вызов API после создания. Если вы хотите, чтобы это происходило только во время обновления, просто измените условие на

if not created :
Вернуться на верх