python - Django - 信号应该放在哪里?
问题描述
集合.models.py:
class Collection(Model):
items = ManyToManyField(Item)
...
项目模型.py
class Item(Model):
state = OneToOneField('ItemState')
...
class ItemState(Model):
item = ForeignKey('Item')
...
结构解释:一个项目一次只有一个状态,但客户端想要跟踪它的状态历史。
我想编写一个在创建集合时创建新状态的信号。由于循环导入,我将信号与模型分开。collection_signals.py
现在我的问题是我是否在or下为上述内容编写信号item_state_signals.py
。
我的猜测是两者都会起作用,但是搜索上述信号的合乎逻辑的地方是什么?我假设 collection 因为 Collection 是发送者,但是这又是关于创建状态和各种模型将创建状态(例如,当创建一个新项目时也应该触发一个新状态)
解决方案
我认为collection和item是你的两个Django Apps。因此,在应用程序中创建一个名为signals.py
. 所以,会有两个文件(理想情况下)
- 收集/信号.py
- 项目/信号.py
我想编写一个在创建 a 时创建新状态的信号
Collection
。
因此,这里sender
将是Collection
并且通常,相应的信号将在collection/signals.py
。
简而言之,查看您的发件人类,检查它所属的位置并在应用程序内创建信号。
推荐阅读
- ffmpeg - 我可以使用 ffmpeg 对程序生成的视频进行编码以进行直播吗?
- reactjs - 组件不触发函数
- python - python - 如何获得df中每个组在pandas中具有MultiIndex的百分比贡献?
- powerbi - 从小计和总计行中排除特定计算
- react-native - 如何在 UI-kitten 中使用 Select 组件的 clear() 方法?
- python - Python 3 tkinter treeview,无法将数据从最后一列转移到第一列
- kubernetes-helm - 将 Helm 3 中的一个值映射到另一个值
- javascript - 尝试使用来自子组件 2 的数据更新子组件 1,而不重新渲染子组件 2
- c++ - 将枚举值转换为字符串
- ide - 当我在 Windows 终端 http-server 上键入命令时