Django表示如何正确连接发送方和接收方

问题描述 投票:0回答:1

我在尝试播放django信号时遇到了问题。我有一个具有以下结构的项目

authexample
manage.py 
posts #django app 
func.py #here is sender and receiver logic is realised 

在帖子应用程序的models.py中,我创建了一个简单的帖子模型

class Post(models.Model):
     title = models.CharField(max_length=30)
     body = models.CharField(max_length=50)

在我位于post app外部的func.py中,我通过以下代码实现了我的信号调用逻辑

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):打印(“文章已保存”)

比起我,我试图为此目的创建测试文章

python manage.py shell 
from func import * 
a = Post("test_title","test_body)

执行此代码后,创建了我的测试文章,但我希望在创建文章后,我的接收器函数func_receiver将执行并在打印语句中提示我字符串。为什么不会发生这种情况。请引导我

django django-signals
1个回答
0
投票

谷歌搜索后,我找到了解决方案。我的问题是因为当我在sender关键字参数中调用接收器时,我指定了func_sender,但正确的方法是指定了模型Post本身。这是我的解决方案

@receiver(post_save,sender=Post)
 def func_receiver(sender,**kwargs):
      print("post was saved)
© www.soinside.com 2019 - 2024. All rights reserved.