Python 为什么我的信号在Django不起作用-我';我做错了?

Python 为什么我的信号在Django不起作用-我';我做错了?,python,django,django-signals,Python,Django,Django Signals,首先,我不是一个开发者 尝试使用Django(版本3.1.2)构建应用程序,但遇到一些信号问题 我的Models.py中有此模型: class PhoneNumbers(models.Model): number = models.CharField(_('Category'), max_length=255) created = models.DateTimeField(_('Created'), auto_now_add=True, blank=True) uuid

首先,我不是一个开发者

尝试使用Django(版本3.1.2)构建应用程序,但遇到一些信号问题

我的
Models.py中有此模型:

class PhoneNumbers(models.Model):
    number = models.CharField(_('Category'), max_length=255)
    created = models.DateTimeField(_('Created'), auto_now_add=True, blank=True)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
from django.db.models.signals import pre_save, post_delete, post_save
from django.dispatch import receiver
from .models import PhoneNumbers, Persons

@receiver(post_save, sender=Persons)
def save_contract(instance, sender, created, **kwargs):
    print("Request finished!")
default_app_config = 'myapp.apps.MyAppConfig'
和一个模型<代码>人

class Persons(models.Model):
    name = models.CharField(_('Name'), max_length=255)
    number = models.CharField(_(Number), max_length=255)
    ...
my
signals.py中的代码

class PhoneNumbers(models.Model):
    number = models.CharField(_('Category'), max_length=255)
    created = models.DateTimeField(_('Created'), auto_now_add=True, blank=True)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
from django.db.models.signals import pre_save, post_delete, post_save
from django.dispatch import receiver
from .models import PhoneNumbers, Persons

@receiver(post_save, sender=Persons)
def save_contract(instance, sender, created, **kwargs):
    print("Request finished!")
default_app_config = 'myapp.apps.MyAppConfig'
当我保存一个人时,我希望在控制台输出中得到一个打印,但什么也得不到。怎么了

我还添加了
\uuuu init\uuuu.py

class PhoneNumbers(models.Model):
    number = models.CharField(_('Category'), max_length=255)
    created = models.DateTimeField(_('Created'), auto_now_add=True, blank=True)
    uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
from django.db.models.signals import pre_save, post_delete, post_save
from django.dispatch import receiver
from .models import PhoneNumbers, Persons

@receiver(post_save, sender=Persons)
def save_contract(instance, sender, created, **kwargs):
    print("Request finished!")
default_app_config = 'myapp.apps.MyAppConfig'
My apps.py看起来像:

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'

您没有加载信号模块。您可以在
MyAppConfig
中执行此操作:

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'

    def ready(self):
        import apps.signals  # noqa
从django.apps导入AppConfig
类MyAppConfig(AppConfig):
名称='myapp'
def就绪(自我):

导入apps.signals#noqa
Hi@Willem Van Onsem,谢谢你的代码,但仍然无法工作。我应该手动安装任何模块吗<代码>导入apps.signals#noqa modulenofounderror:没有名为“apps”的模块
导入信号#noqa modulenofounderror:没有名为“signals”的模块
@sokolata:您将
signals.py
文件保存在哪里?这应该在应用程序的目录中。如果应用程序有不同的名称,那么您当然要导入
导入我的应用程序名称.signals
,因此它应该是您定义信号的应用程序的
signals
模块。