问题标签 [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.
python - 如何防止灯具与 django post_save 信号代码冲突?
在我的应用程序中,我想在新用户注册时在某些表中创建条目。例如,我想创建一个用户资料,然后为他们引用他们的公司和其他一些记录。我用 post_save 信号实现了这个:
这在运行时效果很好。我可以使用管理员创建一个新用户,而其他三个表也可以使用 sensible 获取条目。(除了user.first_name和user.last_name以来的员工在保存时没有填写在admin的表单中。我还是不明白为什么会这样)
当我运行我的测试套件时,问题就来了。在此之前,我已经创建了一堆固定装置来在表格中创建这些条目。现在我收到一条错误消息:
我认为这是因为我已经在 id 为“1”的夹具中创建了公司、员工和个人资料记录,现在 post_save 信号正在尝试重新创建它。
我的问题是:我可以在运行灯具时禁用这个 post_save 信号吗?我可以检测到我作为测试套件的一部分运行而不创建这些记录吗?我现在应该从夹具中删除这些记录吗(尽管信号只设置默认值而不是我想要测试的值)?为什么夹具加载代码不会覆盖创建的记录?
人们如何做到这一点?
sql - django 信号与触发器?
我阅读了 django 信号(http://docs.djangoproject.com/en/dev/topics/signals/),但据我了解,信号永远不会转换为文字 SQL 触发器(http://en.wikipedia. org/wiki/Database_trigger)。
如果我是正确的,信号和触发器是不同的,那么哪一个更好,以什么方式?最佳做法是什么?
.....................
如果您需要,这是一个具体示例:
当且仅当该人的位置在该团队的一组位置内时,我希望该人能够加入团队。我不知道如何使用正常的关系约束来做到这一点,所以据我所知,我被迫使用触发器或信号。我的直觉说我应该使用触发器,但我想知道最佳实践。
django - 如何*不*在 syncdb 上运行 Django 代码
我有一些服务器启动代码位于我的一个 Django 应用程序的“models.py”中。我需要在服务器启动时运行该代码。
问题是,该代码发出一个 SQL 查询,这阻止了我运行syncdb
(psycopg2
它破坏了事务,并且没有创建表。)
将代码放在中间件中并提升django.core.exceptions.MiddlewareNotUsed
并不是最佳选择,因为我也希望在 Django shell 中产生效果(并且将初始化代码放在中间件中听起来也不对。)我还需要等待第一个要求这样做。我想在服务器启动时运行代码,而不是在第一个客户来敲我的网站时。
服务器启动信号仍然没有在 Django 中实现,所以这不是一个选项。
因此,我想以某种方式:
- 检查 Django 是否正在运行同步数据库,所以我不做查询,
- 或者,或者,检查相应的表是否存在,如果它们不存在,那么也不要进行任何查询
我在任何文档中都没有找到上述两个选项。我怎么做?还是有更好(即理智)的方式来做我想做的事情?
django - django-paypal setup for paypal web site pro (wpp) 信号问题
我正在使用 dcramer 的 django-paypal 分支,并且到目前为止我一直成功地设置它。我试图将“paypal.pro.signals.payment_was_successful”连接到我编写的监听器,但它多次发送信号,这导致我的应用程序出错。我已经尝试将'dispatch_uid'添加到我的连接语句中,但它仍然多次发送......我做错了什么?我什至应该使用这个信号吗?
django - Django 评论提交通知
我正在使用 Django 的 contrib.comments 并想了解以下内容。
是否有任何实用程序或应用程序可以插入到应用程序中,当在项目上发布评论时向您发送通知?
我并没有真正使用过信号,所以请稍微描述一下。
这就是我想出的。
django - Django 通知评论获取所有者
我正在考虑访问拥有已发布评论的 content_type 的用户
目前我可以访问发布评论的用户,但是我想通知拥有该项目的人......
我试着做user = comment.content_type.user
,但我得到一个错误。
在我的主__init__.py
文件中
一旦我将其更改为user = request.user
它工作正常,但随后通知会发送给发表评论的人。
django - 芹菜中的 Django 信号
我有一个在 Celerybeat 实例中运行的任务。执行该任务时,它有时会修改模型对象,该对象应触发 post/pre_save 信号,但事实并非如此。信号没有发生。我想这是由于 Django 的信号是同步的,而 celery 在不同宇宙的不同线程中的不同服务器上执行它。有没有一种简单的方法可以在芹菜中运行这些信号时仍然触发它们?
django - django post_save 信号发送过时的内联表单集
考虑以下:
现在,每当有人创建或修改订单时,我想发送一封包含订单详细信息的电子邮件。
到目前为止还没有火箭科学......让我们只使用 post_save 信号;
但是有一个小问题,传递给 email_notify 的 OrderForm 对象按预期更新了新数据,但没有更新相关的 OrderFormLine 项目。
我试图覆盖管理员和模型中的保存方法,我试图在将对象、表单及其关系传递给我的通知处理程序之前保存它,但没有任何效果。
我知道我可以将 post_save 信号附加到 OrderItem 模型,但随后将为每个项目发送电子邮件。
帮助我在疯狂的边缘。
更新:
短篇故事:
python - Django:在不访问请求对象的情况下获取绝对 URL
我有一个像下面这样的模型。创建实例后,我想向感兴趣的一方发送电子邮件:
但是,该reverse
调用仅返回 URL 的路径部分。示例:/stops/9/status/
。我需要一个完整的 URL,例如http://example.com/stops/9/status/
. 我将如何检索当前网站的主机名和端口(对于不使用端口 80 的测试实例)?
我最初的想法是通过一个变量来提供settings.py
它,然后我可以根据需要访问它。但是,认为有人可能有更强有力的建议。
django - 通过管理站点修改 Django CharField 时发送电子邮件通知
我有一个通常为空的 CharField。mail_managers
当字段设置为非空值时,我想向所有经理(使用 )发送电子邮件通知。对此字段的更改只能通过管理站点进行。
我认为这可能是我可以通过信号做的事情,但我没有在文档中看到适当的信号。有任何想法吗?