首页 > 解决方案 > 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 是发送者,但是这又是关于创建状态和各种模型将创建状态(例如,当创建一个新项目时也应该触发一个新状态)

标签: pythondjangodjango-modelsdjango-signals

解决方案


我认为collectionitem是你的两个Django Apps。因此,在应用程序中创建一个名为signals.py. 所以,会有两个文件(理想情况下)

  1. 收集/信号.py
  2. 项目/信号.py

我想编写一个在创建 a 时创建新状态的信号Collection

因此,这里sender将是Collection并且通常,相应的信号将在collection/signals.py

简而言之,查看您的发件人类,检查它所属的位置并在应用程序内创建信号。


推荐阅读