Python Django信号接收器不';尽管在ready()方法中已连接,但无法工作

Python Django信号接收器不';尽管在ready()方法中已连接,但无法工作,python,django,django-signals,Python,Django,Django Signals,我是Django的新手,也许我的问题有一个简单的答案,但我陷入了僵局。 我的信号代码存在于signals.py,我使用@receiver。根据文档,我在apps.py中导入了ready()中的信号子模块。但是它不起作用,有人能帮我吗 注意:如果我在models.py中写入信号代码,一切都会正常工作 代码: signal.py from django.db.models.signals import post_delete from django.dispatch import receiver

我是Django的新手,也许我的问题有一个简单的答案,但我陷入了僵局。 我的信号代码存在于
signals.py
,我使用
@receiver
。根据文档,我在
apps.py
中导入了ready()中的信号子模块。但是它不起作用,有人能帮我吗

注意:如果我在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)
from django.apps import AppConfig


class ProductsConfig(AppConfig):
  name = 'products'

  def ready():
      import products.signals
INSTALLED_APPS = [
    ...,
    'products',
    ...,
]
apps.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)
from django.apps import AppConfig


class ProductsConfig(AppConfig):
  name = 'products'

  def ready():
      import products.signals
INSTALLED_APPS = [
    ...,
    'products',
    ...,
]
settings.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)
from django.apps import AppConfig


class ProductsConfig(AppConfig):
  name = 'products'

  def ready():
      import products.signals
INSTALLED_APPS = [
    ...,
    'products',
    ...,
]
,您需要在
INSTALLED\u APPS
ie中明确注册appconfig:

INSTALLED_APPS = [
    ...,
    'products.apps.ProductConfig',
    ...,
]
或者在
products/\uuuuu init\uuuuuuuuuuuupy
中将其声明为
default\u app\u config

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

谢谢!对不起,我没注意!我以为在
已安装的应用程序中注册我的应用程序名就足够了+我忘了在
就绪()中声明
self