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 :