我在尝试使用Django信号时遇到了问题。我有一个项目与以下结构
authexample
manage.py
posts #django app
func.py #here is sender and receiver logic is realised
在posts应用程序的models.py中,我创建了一个简单的post模型
class Post(models.Model):
title = models.CharField(max_length=30)
body = models.CharField(max_length=50)
在我的func.py
中,它位于post应用程序之外,我通过以下代码实现了我的信号调用逻辑
from django.db.models import models
from posts.models import Post
from django.db.models.signals import post_save
from django.dispatch import receiver
#my sender function
def func_sender(title,body):
a = Post(title=title,body=body)
a.save()
#receiver function
@receiver(post_save, sender=func_sender)
def func_receiver(sender,**kwargs):
print("article was saved")
比我试图创建测试文章,为此目的,我运行
python manage.py shell
from func import *
a = Post("test_title","test_body)
当这段代码被执行时,我的测试文章被创建,但我希望在文章创建后,我的接收器函数func_receiver
将执行并提示我打印语句中的字符串。为什么这不会发生。请指引我
1条答案
按热度按时间gzszwxb41#
Google搜索后,我找到了解决方案。我的问题是,当我在sender关键字参数中调用receiver时,我指定了
func_sender
,但正确的方法是指定模型Post本身。这是我的解决方案