Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-信号应放置在何处?_Python_Django_Django Models_Django Signals - Fatal编程技术网

Python Django-信号应放置在何处?

Python Django-信号应放置在何处?,python,django,django-models,django-signals,Python,Django,Django Models,Django Signals,collection.models.py: 类集合(模型): items=ManyToManyField(项目) ... item.models.py 类项目(模型): state=OneToOneField('ItemState') ... 类别ItemState(模型): 项目=外键(“项目”) ... 结构解释:一个项目一次只有一个状态,但客户端希望跟踪其状态历史记录 我想写一个信号,在创建集合时创建一个新状态。由于循环导入,我将信号与模型分离。现在我的问题是,我是否在collecti

collection.models.py:

类集合(模型):
items=ManyToManyField(项目)
...
item.models.py

类项目(模型):
state=OneToOneField('ItemState')
...
类别ItemState(模型):
项目=外键(“项目”)
...
结构解释:一个项目一次只有一个状态,但客户端希望跟踪其状态历史记录

我想写一个信号,在创建集合时创建一个新状态。由于循环导入,我将信号与模型分离。现在我的问题是,我是否在
collection\u signals.py
item\u state\u signals.py
下写入上述信号

我的猜测是两者都会起作用,但搜索上述信号的合理位置是什么?我假设collection是因为collection是发送方,但这同样是关于创建状态的,各种模型将创建状态(例如,当创建一个新项目时,也会触发一个新状态)

我假设collection和item是您的两个Django应用程序。因此,在应用程序中创建一个名为
signals.py的模块。因此,将有两个文件(理想情况下)

  • 收集/信号.py
  • 项目/signals.py
  • 我想编写一个信号,在创建
    集合时创建一个新状态

    因此,
    发送方
    将是
    集合
    ,而通常,相应的信号将在
    集合/signals.py中


    简而言之,看看你的<强>发件人<强>类,检查它所在的地方并在应用程序内创建信号。

    你的信号究竟在做什么,你可以考虑重写保存方法而不是使用信号。