Я хочу удалить файл из хранилища, когда экземпляр File
удален. Пытается использовать сигнал django.вот моя модель Файл:
class File(models.Model):
orig_name = models.CharField(_('Original Name'), max_length=255)
conversation = models.ForeignKey('conversation.Conversation', on_delete=models.CASCADE)
архитектура каждого приложения одинакова. Все приложения имеют собственный каталог signals
, а в каталоге сигналов у нас есть файлы __init__.py
и handlers.py
.краткое дерево моего приложения с некоторыми подробностями для приложения file
:
apps
├── conversation
├── post
└── file
├── admin.py
├── apps.py
├── __init__.py
├── models.py
├── signals
│ ├── handlers.py
│ └── __init__.py
├── tests.py
├── urls.py
└── views.py
здесь apps/file/apps.py
:
from django.apps import AppConfig
class FileConfig(AppConfig):
name = 'apps.file' # exact as INSTALLED_APP in setting.py
def ready(self):
import apps.file.signals.handers
здесь apps/file/signals/handlers.py
:
Файл
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from apps.file.models import File
@receiver(pre_delete, sender=File)
def remove_file_from_storage(sender, instance, *args, **kwargs):
print('pre_delete signal for File working')
# some code is here
и app/file/signals/__init__.py
пуст.В этом проекте мы используем несколько сигналов, и все они работают нормально, но я не знаю, почему этот сигнал не работает. Другой сигнал - от пользовательского и встроенного сигнала.пожалуйста, обратите внимание, когда я перемещаю функцию def remove_file_from_storage
в другое приложение в app_name/signals/handlers.py
, она работает нормально. Процесс удаления - это простой generics.DestroyAPIView
DRF.где проблема с моим архитектором использования сигнала? спасибо