在文档中Django
,它指定models.py
是定位信号回调函数的好地方(post_save
, pre_save
, etc).
这段代码应该放在哪里?
您可以将信号处理和注册代码放在您喜欢的任何地方。
但是,您需要确保它所在的模块获取
尽早导入,以便信号处理提前注册
需要发送任何信号。这使得您的应用程序的 models.py 成为一个很好的选择
放置信号处理程序注册的地方。
source: https://docs.djangoproject.com/en/dev/topics/signals/ 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)
如何在 models.py 中“连接”信号,同时将函数保留在 signal.py 中?
一个例子:
# models
from myapp import signals
class MyModel(models.Model)
pass
post_save.connect(signals.do_some_stuff_with_mymodel, sender = MyModel)
# signals
def do_some_stuff_with_mymodel(**kwargs):
pass
这样你就不必导入models
in signals
at all
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)