【发布时间】:2020-04-24 19:56:22
【问题描述】:
Django 3.0.5.
apps.py
from django.apps import AppConfig
from django.db.models.signals import post_save
from django.dispatch import receiver
class NewsConfig(AppConfig):
name = 'news'
def ready(self):
from .models import News # Breakpoint 0
@receiver(post_save, sender=News)
def handle_news_save(sender, **kwargs):
print("Working")
a = 0 # Breakpoint 1
models.py
class News(models.Model):
news_text = models.TextField()
settings.py
INSTALLED_APPS = [
...
'news.apps.NewsConfig',
]
问题
当我运行应用程序时,解释器在断点 0 处停止。那是在下一行 Django 知道我正在捕捉信号。
但是当我在管理站点中保存新闻实例时,在断点 1 处,解释器并没有停止。而且,当然,不会发生打印。 你能帮我抓住信号吗?
【问题讨论】:
-
尝试在 handle_news_save 函数中添加一个 'instance' 参数: def handle_news_save(sender, instance, **kwargs): 另外,你是否将它添加到 init.py你的应用程序? default_app_config = 'yourproject.news.apps.ProfilesConfig'
-
亲爱的 Eduardo,您能否澄清一下,为什么我需要那里的实例?这是文档:docs.djangoproject.com/en/3.0/topics/signals/… 如您所见,给定示例中不存在任何实例。那么,如果唯一的原因可能是到达断点 0,解释器没有任何问题,我为什么需要那个 init.py?
标签: django django-signals