嗨,我正在定义自己的信号和接收器。我只是想知道我应该把代码放在哪里。它位于models.py或views.py中。请帮忙
答案 0 :(得分:2)
将信号函数放入signals.py
中,然后
不要忘记将应用程序配置放在__init__.py
文件中
apps.py
文件中的现成方法。
apps.py
:
from django.apps import AppConfig
class AppNameConfig(AppConfig):
name = 'app_name'
def ready(self):
import app_name.signals
__init__.py
(应用文件夹):
default_app_config = 'app_name.apps.AppNameConfig'
答案 1 :(得分:0)
signals.py
。在应用程序的__init__.py
中添加此行。
import signals
重启django项目。
工作吧!
答案 2 :(得分:0)
您可以创建signals.py
文件。但是无法将import signals
添加到__init__.py
文件中。因为与信号相关的模型尚未加载。因此,在apps.py文件中,您可以找到从AppConfig
类继承的类,并且该类具有方法ready(self)
的方法。您应该在此函数中导入信号:
from django.apps import AppConfig
class MainConfig(AppConfig):
name = 'main'
def ready(self):
import main.signals
答案 3 :(得分:0)
给出一个名为“ app”的应用程序来处理名为“ Model”的模型的pre_save信号
apps.py
from django import apps
from django.db.models import signals
class AppConfig(apps.AppConfig):
name = 'app'
def ready(self):
# import here to avoid circular imports
from app import signals as app_signals
signals.pre_save.connect(app_signals.model_pre_save, sender=self.get_model('Model'))
signals.py
def model_pre_save(sender, instance, **kwargs):
if kwargs.get('raw', False):
return # raw implies fixture, ignore
# add code here to handle signal