在Django
的文档中,它指定models.py
是定位信号回调函数的好地方(post_save
,pre_save
等)。在
Where should this code live?
You can put signal handling and registration code anywhere you like. However, you'll need to make sure that the module it's in gets imported early on so that the signal handling gets registered before any signals need to be sent. This makes your app's models.py a good place to put registration of signal handlers.
source: https://docs.djangoproject.com/en/dev/topics/signals/
但是,我有大量依赖于信号的业务逻辑,而且在同一个文件中查看这些信号和所有模型变得越来越困难。在
我想把它们移到另一个文件中,但我不知道如何或在哪里可以引用它们。在
那么,考虑到下面的文件结构,您能否提供一个例子,说明我如何引用包含适当信号的二级(或三级等等)文件?在
# models.py located in /myapp/some_installed_app/
from django import needed.modules
... # some reference to signals.py?
class SomeModel()
pass
# signals.py located in /myapp/some_installed_app/
from django import needed.things
...
def somefun(sender,**kwargs)
pass
post_save.connect(somefun, sender=SomeModel)
另一个选择是在
__init__.py
文件中导入信号。在这将确保提前注册并避免循环进口。在
“连接”信号如何模型.py同时保持函数signals.py?在
例如:
这样你就不必在
signals
中导入models
相关问题 更多 >
编程相关推荐