问题标签 [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.

0 投票
5 回答
24442 浏览

python - Django 信号与覆盖保存方法

我很难解决这个问题。现在我有一些看起来像这样的模型:

一个评论有几个“分数”,overall_score 是分数的平均值。保存评论或分数时,我需要重新计算总分平均值。现在我正在使用覆盖的保存方法。使用 Django 的信号调度器有什么好处吗?

0 投票
2 回答
3883 浏览

python - m2m 字段上的 post_save 信号

我有一个非常通用的文章模型,与标签模型有 m2m 关系。我想记录每个标签的使用情况,我认为最好的方法是对标签模型上的计数字段进行非规范化,并在每次保存文章时更新它。我怎样才能做到这一点,或者也许有更好的方法?

0 投票
1 回答
400 浏览

django - 拥有更新字段或 COUNT 查询是否“更好”?

在我正在开发的 Django 应用程序中,我进行了以下操作:

我计划经常访问avg_child_rating 。如果我执行以下操作会优化:

现在的不同之处在于,每次创建/评级/删除孩子时,都会更新 Parent 对象。我知道创建/评级会经常进行。

什么更

0 投票
4 回答
1682 浏览

python - 保存一次后如何将模型实例设为只读?

我正在编写的 Django 项目中的一个功能是发送时事通讯。我有一个模型Newsletter和一个函数,send_newsletter我已经注册了它来收听Newsletter's 的post_save信号。当通过管理界面保存时事通讯对象时,send_newsletter检查是否created为 True,如果是,则它实际发送邮件。

但是,出于显而易见的原因,编辑已经发送的时事通讯没有多大意义。有没有办法Newsletter在保存对象后将其设为只读?

编辑:

我知道我可以重写save对象的方法来引发错误,或者如果对象存在则什么都不做。但是,我没有看到这样做的意义。至于前者,我不知道在哪里捕获该错误以及如何向用户传达对象未保存的事实。至于后者,给用户错误的反馈(管理界面说保存成功)似乎不是一件好事。

我真正想要的是允许用户使用 Admin 界面编写时事通讯并发送,然后浏览已经发送的时事通讯。我希望管理界面在不可编辑的输入框中显示已发送时事通讯的数据,而无需“保存”按钮。或者,我希望“保存”按钮处于非活动状态。

0 投票
4 回答
4771 浏览

python - Django - 我如何_not_调度信号?

我为我的模型编写了一些智能通用计数器和管理器(以避免select count查询等)。因此,我对 post_save 进行了一些繁重的逻辑。

我想防止在不需要时处理信号。我想完美的界面应该是:

我怎样才能做到这一点?


更新

如果有人感兴趣,请提供有关我在做什么的更多信息:

  1. 通用计数器存储在单独的表中
  2. 每次 Django 对对象列表进行分页时,它都会调用我的自定义管理器的重写 count() 方法,该方法基本上检索适当对象类的静态计数器值。
  3. 信号触发计数器更新的逻辑,这有点复杂,因为它检查相关模型的许多方面(即它必须基于嵌套类别树生成可见性属性)。我不能把这个逻辑放在 Model.save() 中,因为一个计数器依赖于许多不同的模型。我希望将这种逻辑整合在一起,而不是碎片散布。
  4. 我正在对我的一些模型进行非规范化,因此我跨表重写(复制)某些值。
  5. 出于测试目的,我运行我的小命令扩展 - Dilla来填充随机数据。
  6. 我注意到触发了不需要的信号,因此我希望它们有条件地运行。

希望它足够清楚。请原谅我的语言错误。

0 投票
4 回答
675 浏览

python - 为什么信号不简单地称为事件?

据我所知,在 Python 和 Django 中,信号只是委托事件。有什么可以在功能上将它们与 C#、Java、ActionScript 等中的典型事件概念区分开来吗?

0 投票
2 回答
2847 浏览

python - Django Model.object.get pre_save 函数怪异

我制作了一个连接到模型“pre_save”信号的函数。在函数内部,我试图检查模型实例的 pk 是否已经存在于表中:

模型的第一个实例引发错误。我发现了错误并从标题中生成了一个 slug 字段。在第二种情况下,它不会引发错误。我在两个实例上检查了 instance._get_pk_val() 的值,它们是相同的:无

所以:

这是我玩python和django的第三天。所以我很抱歉,如果它是我没有看到的新事物。

编辑:

该模型:

功能基础:

@S.Lot 告诉我在评论中覆盖 save() 方法。我得试试。我仍然想知道为什么对 model.objects.get() 的第二次调用没有使用此方法引发错误。

编辑 2 谢谢@S.Lot。覆盖保存方法非常有效。还是对信号法很好奇。嗯,很奇怪。

编辑 3 在玩了一会儿之后,我发现使用 instance.objects.get() 而不是 sender.objects.get() 有效:

需要是:

一个错误?出于某种原因,我认为 sender.objects.get() 将与 Test.objects.get() 相同。

0 投票
1 回答
1667 浏览

django - Django模型覆盖保存/使用信号/或使用模型形式?

我意识到以前有人问过这个问题,但是我找不到真正涉及我正在尝试做的事情的问题。我认为这很简单,但我想知道普通民众认为这里最好的形式是什么。

假设我们有以下内容:

模型.py

保存功能中的评论几乎总结了我的问题: - 我们如何确保给用户的相关 TestClass 不超过 5 个 - 如果已经有 5 个,我们如何优雅地退出保存(不保存) -我们如何将此报告给用户?- 我们在哪里验证 testfield 对象以确保它只有 [az]?我可以只导入 re 并在这里做吗?我应该吗?

最好把这一切都扔在这里吗?我应该触发 pre_save 信号吗?还是我应该只使用带有验证的 ModelForm?

0 投票
2 回答
502 浏览

asp.net-mvc - Linq to Sql中的信号?

有谁知道使用 LINQ to SQL做类似于Django 的事情的方法?signals

我正在尝试记录何时插入新行以及何时更新某些列,所以我真的只想pre_save发出post_save信号。

我可以通过使用像OnFooIDChanging()OnFooIDChanged()(其中FooID是主键)定义的部分来处理某些模型,但这不适用于主键不是标识或由代码设置的模型。

对于那些,我可能会使用OnValidate(),但那只是pre_save,并且它使处理数据库变得困难,因为OnValidate()被调用 from DBContext.SubmitChanges(),这当然不允许SubmitChanges()从内部调用第二个,post_save就我而言基本上是不可能的可以看到。

0 投票
4 回答
5991 浏览

django - 有没有办法列出 Django 信号?

有没有办法查看 Django 中设置了哪些信号?