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

4
首先,我不是开发人员。
尝试使用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)

以及一个名为 Persons 的模型

class Persons(models.Model):
    name = models.CharField(_('Name'), max_length=255)
    number = models.CharField(_(Number), max_length=255)
    ...

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!")

当我保存一个Person时,我希望在控制台输出中得到一条打印信息,但是我什么都没有得到。这是怎么回事?

我还在__init__.py中添加了以下内容:

default_app_config = 'myapp.apps.MyAppConfig'

我的apps.py文件如下:

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'
2个回答

5

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

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'

    def <b>ready</b>(self):
        import <b>apps</b>.signals  # noqa

1
嗨@Willem Van Onsem, 感谢您提供的代码,但仍然无法正常工作。我是否需要手动安装任何模块?导入应用程序.信号 # noqa ModuleNotFoundError:没有名为“apps”的模块import signals # noqa ModuleNotFoundError:没有名为"信号"的模块 - sokolata
@sokolata:你把 signals.py 文件保存在哪里了?它应该在你的应用程序目录下。如果应用程序有不同的名称,那么你需要导入 import my_app_name.signals,所以它应该是你定义信号的应用程序的 signals 模块。 - Willem Van Onsem

-1

此外,信号对于批量更新无效。


请在您的回答中提供更多细节。目前的写法让人难以理解您的解决方案。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接