【问题标题】:Django signals not working for my directory structureDjango 信号不适用于我的目录结构
【发布时间】:2018-07-06 03:11:15
【问题描述】:

我正在尝试为我的应用实现信号,我的目录结构如下所示

- 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 中,我已将就绪函数更改为

class Post(AppConfig):
    name = 'post'

    def ready(self):
        import utility_apps.posts.signals

我什至尝试在 ready 函数中导入 posts.signal。我在这里做错了什么,请帮助

我安装的应用如下所示

INSTALLED_APPS = [
    'utility_apps.posts',
    'mainapp',
     .....
]

【问题讨论】:

  • 你能把你的INSTALLED_APPS设置给我们吗?
  • 在问题中更新
  • 不是一个正确的答案,但为什么要使用信号来保存可能在您的后期模型中保存的东西???
  • @ShahrukhMohammad 请参阅the answer to this question - 这可能会解决您的问题。

标签: django django-signals


【解决方案1】:

以下解决方案对我有用。

我必须做的第一个更改是在我的__init__.py 应用程序的__init__.py 文件中添加一个default_app_config 值作为

default_app_config = 'utility_apps.posts.apps.PostsConfig'

然后我不得不将PostsConfig 类更改为

class PostsConfig(AppConfig):
    name = 'utility_apps.posts'

    def ready(self):
        import utility_apps.posts.signals

基本上我必须改变两件事 -

  1. 默认设置为posts的名称
  2. 更改 ready 函数并将我的信号导入其中

它对我有用。 或者,我也可以在我安装的应用程序中包含我的 PostsConfig。

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多