尽管在ready()方法中连接,Django信号接收器仍然无法工作

时间:2017-12-13 10:13:27

标签: python django django-signals

我是Django的新手,也许我的问题有一个简单的答案,但我处于僵局。 我的信号代码位于console.log(...),我使用signals.py。根据文件,我在@receiver中的ready()内导入了信号子模块。但它没有工作=(有人可以帮助我吗?

N.B。如果我在apps.py内写下我的信号代码,一切都很顺利。

代码: models.py

signal.py

from django.db.models.signals import post_delete from django.dispatch import receiver import os from .models import ProductImage def delete_image_from_storage(path): if os.path.isfile(path): print(path) os.remove(path) @receiver(post_delete, sender=ProductImage) def post_delete_image(sender, instance, **kawargs): if instance.photo: print(instance.photo.path) delete_image_from_storage(instance.photo.path)

apps.py

from django.apps import AppConfig class ProductsConfig(AppConfig): name = 'products' def ready(): import products.signals

settings.py

1 个答案:

答案 0 :(得分:5)

As explained in the FineManual,您需要在INSTALLED_APPS中明确注册appconfig,即:

INSTALLED_APPS = [
    ...,
    'products.apps.ProductConfig',
    ...,
]

或在default_app_config中声明为products/__init__.py

# products/__init__.py
default_app_config = "products.apps.ProductConfig"