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

sok*_*ata 4 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 = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
Run Code Online (Sandbox Code Playgroud)

和一个模型Persons

class Persons(models.Model):
    name = models.CharField(_('Name'), max_length=255)
    number = models.CharField(_(Number), max_length=255)
    ...
Run Code Online (Sandbox Code Playgroud)

我的代码signals.py

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!")
Run Code Online (Sandbox Code Playgroud)

当我保存一个人时,我希望在控制台输出中得到打印,但什么也没得到。怎么了?

我还添加__init__.py

default_app_config = 'myapp.apps.MyAppConfig'
Run Code Online (Sandbox Code Playgroud)

我的 apps.py 看起来像:

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

您没有加载信号模块。您可以在以下位置执行此操作MyAppConfig

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'

    def ready(self):
        import apps.signals  # noqa
Run Code Online (Sandbox Code Playgroud)