问题标签 [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 投票
1 回答
841 浏览

django - 多个 post_save 信号导致翻译模型出现 slugify 问题

我目前正在使用 django-nani 在项目中启用翻译模型。

其中许多模型需要 slugs 来生成 URL。我的客户是非技术性的,要求他们进入 slug 就期望和支持成本而言都是不合理的。翻译是一个新的需求,所以我正在努力调整旧的翻译模型。

保存模型时,nani 注册一个 post_save 信号以保存翻译。这很好,除了现在如果我尝试注册一个 post_save 信号以使用所述翻译来生成 slug,我很不走运;我的信号在之后或同时运行,并且不存在翻译对象。

有问题的型号代码:

这会导致 product_post_save 的第一行出现ProductTranslation 匹配查询不存在DoesNotExist 异常。

我曾短暂尝试重构 nani 以覆盖 save 方法而不是使用 post_save,但这似乎是一项不平凡的任务(至少对于像我这样对其内部结构知之甚少的人来说)。

我查看了一些第三方 autoslug 字段,但我无法想象有任何人可以使用这种特殊情况和翻译库。

我的问题是...

  • 有没有办法确保一个 post_save 排在任何其他已定义的之后?
  • 除此之外,还有其他人可以为这个问题提出不同/更好的解决方案吗?

编辑:发现信号优先级已被 Django 核心开发人员建议并击落。

0 投票
1 回答
3435 浏览

django - Django pre_save 信号

我需要能够在保存模型数据之前对其进行更改,因此我认为使用 pre_save 处理程序是最佳选择:

在 kwargs 的实例键下,我希望找到我正在保存的实际模型实例,但我得到了一个 LogEntry 类的对象 - 这就是我的函数无法返回此错误的原因:'LogEntry' 对象没有属性'tags' . 那么 - 我该如何解决呢?检查实例是否有属性标签不是解决方案,因为我总是只得到 logentry 对象。我最终可以重载 Model.save 方法,尽管我不想这样做。

0 投票
3 回答
6939 浏览

django - 如果其他用户更改数据,则 Django 刷新页面

我有一个测试 django 应用程序。

在一个页面中,测试向所有用户显示相同的问题。

我希望当用户正确回答时,向其他活动用户的浏览器发送信号以刷新到下一个问题。

我一直在学习 django 中的信号,我学习与它们一起工作,但我现在不知道如何将“刷新信号”发送到客户端浏览器。

我认为它可以使用 javascript 代码来检查某个值(实际问题)是否更改以及更改是否重新加载页面,但我不知道这种语言并且我发现的信息很混乱。

有谁能够帮我?

非常感谢。

0 投票
1 回答
1777 浏览

django - 使用 Django 信号的正确案例

我有一个全球性问题和一个关于信号上下文中特定问题的问题。为了解决什么问题,signal dispatcher最有用,大材小用?

我有一个用外键保存多个模型的问题。我认为这是一个信号可以解决它。但我不知道怎么做,因为我不了解信号的范围。

模型

所有的形式都是继承自上述模型的模型形式。最后两个用于模型表单集中。所有这些表单都显示在模板中的一个 html 表单中。

形式

在视图中,我需要使用当前模型的分配 ID 保存EducationFormand ExperienceFormwith字段。cvCV

我可以通过信号解决这个问题吗?

很难提出这个问题,所以如果有什么不清楚的地方,我会编辑这个问题。

0 投票
4 回答
5796 浏览

python - 为什么我可以在它的 post_save 信号期间访问一个对象,但当我在该信号中触发代码时不能在另一个进程上调用它

所有,我对 django 信号有疑问。

我有一个模型 为了加快页面加载的响应速度,我正在卸载一些必须完成的密集处理,通过调用我们正在运行的第二个本地主机网络服务器,两者都使用相同的数据库。我看到调用进程可以检索对象的行为,但被调用进程不能。端口 80 和端口 [port] 都指向在同一个数据库上运行的 django 进程。

在模型.py

在views.py

此外,在 urlopen 调用引发异常后,该对象在数据库中不存在。据我了解,post_save 是在保存对象并写入数据库后调用的。这是不正确的吗?

0 投票
2 回答
1278 浏览

python - Django 信号接收器接受 self 参数

我正在制作游戏。每次发生某个动作时,它都会发送一个信号。该信号被许多不同的对象使用。例如,玩家模型实例会恢复一点生命值,灯笼会减少他们剩下的油量。我希望这些模型的实例在发出信号时做出反应并修改它们的数据。但是,我不知道如何在接收函数中引用实例本身,因为我不能将“self”放在函数使用的参数列表中。

为什么将接收器作为实例方法?因为在发送信号时,对信号做出反应的实例列表是未知的。该信号只是一个 ping 通知感兴趣的对象(即使用接收器方法)发生了事件,因此它们可以触发自己的特定行为。

0 投票
2 回答
6733 浏览

django - Facebook 喜欢使用 django 信号或通知的通知更新

如果任何其他用户喜欢或在用户的博客或帖子上发表评论,我如何使用 django-notifications 或 django-signals 来制作显示在用户个人资料中的 facebook 更新通知?

0 投票
1 回答
18969 浏览

python - 当有人评论他们的帖子时如何使用 django-notification 通知用户

我已经在 django 中开发了一段时间,并开发了一个简洁的网站,该网站具有撰写博客、发布问题、共享内容等功能。但是仍然缺少一件事,即为用户创建通知。

我想要做的是在他们的个人资料中通知用户,每当有人评论他们的帖子,或者如果他们正在关注特定帖子并且有更新,然后通知用户该更新。我环顾了许多应用程序,但我仍然对如何做到这一点感到困惑。

在使用的情况下,django-notification我似乎有一个印象(这可能是错误的),我只能使用它来通过电子邮件通知用户,即我不能在用户个人资料中显示这些通知,就像我们在 facebook 上一样。

首先我想知道我是否错了,然后我真的需要一些适当的教程或指导来指导如何去做。我知道如何注册通知并在适当的信号下发送,但没有文档说明如何在模板中显示这些通知(如果可以的话)。

任何指导/教程/入门文档将不胜感激。

0 投票
2 回答
686 浏览

django - Django 从发送信号中排除模型

我想通过处理 post_save、delete 和 init 信号来跟踪我的模型及其 CRUD 操作,然后将有关此操作处理的条目保存到数据库中。

然后有趣的是,它是保存的递归......

我创建了模型 CRUD_Storage,我想阻止它发送诸如 pre(post)init、delete、save 之类的信号。

0 投票
2 回答
1770 浏览

django - 即使使用 dispatch_uid,Post_save 也会收到两次保存

我在单个文件中有我的模型:

__init__.py我导入每个模型之后,我设置了信号处理。

对于Event模型,我需要一些post_save处理。

这是 的截断版本__init__.py

每当我Event通过控制台保存消息时,post_save都会打印一次,但每当我使用管理界面时,它就会打印两次。这可能是因为我也导入了里面的模型admin.py

是否有解决方法,以便我可以从管理界面保存 Event 对象而无需post_save触发两次?