#django #django-signals
Вопрос:
У меня есть несколько post_save
сигналов «создавать новые изображения сразу после сохранения экземпляров модели», как указано в документах django-versatileimagefield.
Пример:
@receiver(models.signals.post_save, sender=VendorImage)
def warm_vendor_images(sender, instance, **kwargs):
warmer = VersatileImageFieldWarmer(
instance_or_queryset=instance,
rendition_key_set=settings.VERSATILEIMAGEFIELD_RENDITION_KEY_SETS['default'],
image_attr='image',
verbose=True
)
warmer.warm()
Это прекрасно работает, когда я загружаю изображения и даже при создании своих светильников. Однако у меня есть две модели, которые заполняются при использовании миграций RunPython
.
Пример:
eventCategories = {
"Poolparty": 'Poolparty.png',
...
}
...
def AddEventCategories(apps, schema_editor):
model = apps.get_model('sp_event', 'EventCategory')
for key in eventCategories:
imagePath = upload_to eventCategories[key]
model.objects.create(name=key, image=imagePath)
...
migrations.RunPython(AddEventCategories)
Мне было интересно create()
, вызывает ли метод save()
для запуска сигнала, но, чтобы быть уверенным на 100%, я позвонил save()
после создания экземпляров: сигнал также не был запущен.
Использование функции VersatileImageFieldWarmer при миграции также приводит к ошибке ( AttributeError: 'ImageFieldFile' object has no attribute 'thumbnail'
).
Как я могу гарантировать, что изображения моего размера будут созданы при создании экземпляров во время процесса миграции?