问题标签 [django-signals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 重复的请求线程在 Django 模型中创建重复的数据库条目
问题:信号接收器检查特定条件下是否存在模型条目,如果不存在,则创建一个新条目。在极少数情况下,条目被重复。
在接收器函数中:
这是一个明显的候选者get_or_create
,但除了清理该代码之外,使用get_or_create
有助于防止这个问题吗?
该信号是在用户操作之后发送的,但我不认为原始请求被重复,因为这会触发其他操作。
在数千个实例中重复发生了几次。这是否一定是由多个请求引起的,还是可以通过某种方式创建重复线程?有没有办法——也许是细粒度的事务管理——来防止重复?
在 Apache2 上使用 Django 1.1、Python 2.4、PostgreSQL 8.1 和 mod_wsgi。
django - 来自管理员的 Django 信号
例如,如何区分来自常规视图的 post_save 和来自管理员的 post_save?
python - Django在m2m字段中自动分类
我在我的 django/satchmo 继承的模型产品中完成了一个 pre_save 信号,称为 JPiece,我从 satchmo 类别继承了另一个模型,称为 JewelCategory。pre_save 信号使 JPiece 对象获取类别列表并将那些符合 Jpiece 描述的类别添加到关系中,这是在模型中完成的,这意味着如果我手动执行
p = Jpiece.objects.get(pk=3) p.save()
类别已保存并添加到 p.category m2m 关系中,但如果我从管理员保存,则不会执行此操作...
我怎样才能做到这一点......从管理员那里保存一个 JPiece 并获得它所属的类别......
以下是模型,请记住它们都具有来自 satchmo 产品和类别类的模型继承。
我知道我有时可能对我需要什么的解释含糊不清,所以请随时提出任何问题,我一定会尽快澄清,因为这是一个迫切需要这个的客户。
一如既往地感谢大家...
python - Django“满载”后如何运行任意代码
在我的 Django 环境“完全加载”之后,我需要执行一些相当简单的任务。
更具体地说,我需要做一些事情,比如Signal.disconnect()
默认情况下由我的第三方库设置的一些 Django 信号和connect
我自己的信号,我需要做一些“猴子补丁”来为来自另一个库的一些 Django 模型添加便利功能。
我一直在我的 Django 应用程序__init__.py
文件中做这些事情,这似乎对猴子修补工作正常,但对我的信号断开连接不起作用。问题似乎是时间问题之一——无论出于何种原因,第三方图书馆似乎总是Signal.connect()
在我尝试之后调用Signal.disconnect()
它。
所以两个问题:
INSTALLED_APPS
根据我的应用程序__init__.py
模块加载顺序的顺序,我有什么保证吗?
在Django 应用程序完全加载到内存后,是否有合适的位置放置需要运行的逻辑?
python - 使用 Django 的 post_save() 信号
我有两张桌子:
添加新广告后,我需要自动填充验证表。
当然是行不通的。Django 1.2 问:我该怎么做?
好的,解决了一半。
问题是父模型的 post_save() 不调用子模型。
因此,您可以通过直接提供子类来解决它。
所以下一个问题是“我如何使用父类进行 post_save()?”
django - django中是否有信号或类似于“pre_select”的东西?
我正在 django 中创建一个系统,每次在数据库上执行 SQL“选择”查询时调用一个信号会非常有帮助。换句话说,有谁知道是否有类似“pre_select”或“post_select”的信号方法?
我在 django 文档中找到了信号“connection_created”,但找不到任何关于如何使用它的线索,更不用说访问调用它的模型了。官方文档只是说它存在但没有给出简单的使用示例... =/
编辑:connection_created 仅在创建连接时起作用(它的名字怎么说),所以,我仍然没有解决方案 =/。
我想要的一个例子是对不同对象执行此查询:
因此,在将每个查询发送到数据库之前,调用一个函数从每个人那里接收数据,以威胁数据、日志等。我想在 django 中存在类似的功能,因为 django 日志系统似乎使用类似的东西。
欢迎任何帮助。提前致谢!
python - Django:如何在 post_save 信号中访问原始(未修改)实例
我想进行数据非规范化以获得更好的性能,并将我的博客文章收到的投票总和放入 Post 模型中:
当然,我需要保持Post.rating
实际价值。通常我会为此使用数据库触发器,但现在我决定发出post_save
信号(以减少数据库处理时间):
如何在保存之前访问实例值?在数据库触发器中,我会对此进行OLD
预定NEW
义,但是在 post_save 信号中有类似的东西吗?
更新
基于马克的答案的解决方案:
django - 如何取消 django 信号中的删除
有没有办法使用 django pre_delete 信号取消删除记录?
例子:
另一个问题是有没有办法对模型说“在更改文件之前先删除原始文件”因为现在这就是我所做的(见下面的代码),我不确定这是否是最好的方法做。
(在 django 1.2 中,他们会在更改或删除时自动删除文件,但在 django 1.3 中,他们删除了此功能)
提前致谢
django - 使用 post_save 信号处理程序访问新创建的模型实例的相关数据
Entry
当通过管理面板创建模型的新实例时,我需要发送一封电子邮件。所以在models.py
我有:
然后我正在注册 post_save 处理函数:
它有效,但正如我之前提到的,我还需要访问相关附件以将其详细信息包含在消息中。不幸的是,即使实际添加了附件,函数instance.attachments.all()
内部也会返回空列表。send_message
据我所知,发送 post_save 信号时,尚未保存已保存模型的相关数据,因此我无法从该位置获取相关附件。问题是:我是否能够使用信号或任何其他方式来完成此操作,或者我是否必须将此电子邮件发送代码放在外面,例如覆盖Entry
模型的管理面板更改视图?
python - Django pre_save 触发了两次
我正在使用 django 信号进行数据非规范化。这是我的代码:
我不明白为什么,但是当我的Vote
实例被保存时,update_post_votes_on_save()
被调用了两次。我认为我的代码中存在错误,但通过管理界面保存会得到相同的结果。
文档说了一些关于使用dispatch_uid
来防止重复调用的内容,但我不明白是否是这种情况。如何使用dispatch_uid
?我试过这个,但没有运气:
任何想法为什么函数被调用两次以及如何避免它?