Python 为什么我的信号在Django不起作用-我';我做错了?
首先,我不是一个开发者 尝试使用Django(版本3.1.2)构建应用程序,但遇到一些信号问题 我的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
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)
...
mysignals.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
模块。