Python 当放置在models.py之外时,Django信号不工作
我试图在应用程序中的Django模型保存后打印一些文本 我已经在同一应用程序的signals.py文件中为此创建了一个信号 但是,它没有按预期工作(即,没有调用函数,也没有打印文本) 但是,如果我将receiver函数放在models.py文件中,就在我创建的模型的正下方,它就可以正常工作(即调用函数并打印文本) 我已经阅读了文档,检查是否需要将信号放在特定的文件或位置。看起来没有这样的限制 如果没有这样的限制,为什么行为会有所不同 信号。py:Python 当放置在models.py之外时,Django信号不工作,python,django,django-models,signals,django-signals,Python,Django,Django Models,Signals,Django Signals,我试图在应用程序中的Django模型保存后打印一些文本 我已经在同一应用程序的signals.py文件中为此创建了一个信号 但是,它没有按预期工作(即,没有调用函数,也没有打印文本) 但是,如果我将receiver函数放在models.py文件中,就在我创建的模型的正下方,它就可以正常工作(即调用函数并打印文本) 我已经阅读了文档,检查是否需要将信号放在特定的文件或位置。看起来没有这样的限制 如果没有这样的限制,为什么行为会有所不同 信号。py: from django.db.models.s
from django.db.models.signals import post_save
from django.dispatch import receiver
from aws_envs.models import UserStack
@receiver(post_save, sender=UserStack)
def create_user_stack(sender, **kwargs):
print("creating user stack now")
class UserStack(BaseModel):
name = models.CharField(max_length=50)
email = models.EmailField(unique=True, max_length=50, blank=False)
enabled = models.BooleanField(default=True)
def save(self, *args, **kwargs):
print(f"Creating stack with data: {self.name, self.email}")
super(UserStack, self).save(*args, **kwargs)
def __str__(self):
return self.name, self.email
型号。py:
from django.db.models.signals import post_save
from django.dispatch import receiver
from aws_envs.models import UserStack
@receiver(post_save, sender=UserStack)
def create_user_stack(sender, **kwargs):
print("creating user stack now")
class UserStack(BaseModel):
name = models.CharField(max_length=50)
email = models.EmailField(unique=True, max_length=50, blank=False)
enabled = models.BooleanField(default=True)
def save(self, *args, **kwargs):
print(f"Creating stack with data: {self.name, self.email}")
super(UserStack, self).save(*args, **kwargs)
def __str__(self):
return self.name, self.email
INSTALLED_APPS = (
'...',
'post,
)
与
# post/signals.py
from django.dispatch import receiver
from django.db.models.signals import post_save
from post.models import Post
def send():
print("send email!")
@receiver(post_save, sender=Post, dispatch_uid='Post_post_save')
def send_email(instance, **kwargs):
send()