我正在尝试为我的应用实现信号,并且目录结构如下所示
- src
- utility_apps
__init__.py
- posts
- migrations
- static
- templates
admin.py
views.py
apps.py
signals.py
models.py
__init__.py
......
static
manage.py
......
这里posts
是我的应用,而signals.py
在它的文件夹中,但是我的信号不起作用。
我已将信号代码定义为-
from .models import Post
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Post)
def give_group_owner_permission(sender, instance, created, **kwargs):
print("coming to signal")
if created:
print("created")
但是它不起作用。在我的apps.py
中,将ready函数更改为
class Post(AppConfig):
name = 'post'
def ready(self):
import utility_apps.posts.signals
我什至尝试在ready函数中导入posts.signal
。我在这里做错了,请帮忙
我已安装的应用程序如下所示
INSTALLED_APPS = [
'utility_apps.posts',
'mainapp',
.....
]
答案 0 :(得分:0)
以下解决方案对我有用。
我要做的第一项更改是将default_app_config
应用的__init__.py
文件中的posts
值放在
default_app_config = 'utility_apps.posts.apps.PostsConfig'
然后我不得不将PostsConfig
类更改为
class PostsConfig(AppConfig):
name = 'utility_apps.posts'
def ready(self):
import utility_apps.posts.signals
基本上我必须更改两件事-
posts
的名称对我有用。 另外,我也可以将PostsConfig包含在已安装的应用程序中。