问题标签 [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 回答
989 浏览

django - 自定义信号不起作用

我创建了一个信号:

这个信号放在一个signals.py中,我在我的models.py中导入:

在模型文件的页脚中,我将它连接到一个函数,该函数出于测试目的仅打印出一个调试字符串。:

现在,在我的 save() 方法中,我尝试发送一个信号:

但它不会打印出任何东西。如果我尝试像 pre_save 这样的内置信号:

有用。有任何想法吗?

0 投票
1 回答
1031 浏览

django - 版本化模型

我正在考虑如何最好地实现一个无法修改的模型(即:每次修改模型数据时,都会创建一个对象的新实例,并在前一个实例中添加一个引用以反映旧对象的事实已被新的弃用)。

目前,我想到的一些又快又脏的东西看起来像这样:

有些东西告诉我,即使这确实有效,它也可能是一种非常糟糕的方法。有没有更“优雅”的解决方案来做这样的事情?

谢谢!

0 投票
2 回答
5499 浏览

django - 修改 Django 的 pre_save/post_save 数据

我很难掌握来自 django 的 post_save/pre_save 信号。

发生的情况是我的模型有一个名为的字段status,当添加/保存该模型的条目时,必须根据某些条件相应地更改其状态。

我的模型如下所示:

还有我的信号处理程序,为 pre_save 配置:

现在,如果我在ticket.save()最后一行if语句的下方添加一个巨大的迭代黑洞会发生什么,因为这个动作调用了信号本身。这个问题发生在pre_savepost_save中。

嗯...我猜想在保存之前(甚至之后)更改条目的能力在 django 的世界中很常见。那么,我在这里做错了什么?信号是错误的方法还是我在这里遗漏了其他东西?

此外,一旦触发此 pre_save/post_save 函数,是否有可能访问另一个模型的实例并更改其上的特定行条目?

谢谢

0 投票
1 回答
1578 浏览

django - django-registration creating blank django-profiles using signals

I have gone through the solution here and Shacker's django-profiles: The Missing Manual and subsequent signals solution by Dmitko and answers here and many places.

Here are the details:

AUTH_PROFILE_MODULE = "members.Profile"

From members.models.py

From members.forms.py:

From members.signals.py:

And members.regbackend.py:

I am stuck. Basically my ProfileForm is adding fields to User Registration page but on saving, it is creating a User object with the username an email address but with First and Last name either in the User Object nor the Profile Object are not saved. However a blank Profile is created with the blank fields. I must be missing something small but I can't seem to see it.

So the signals are working but the data is not being saved into the profile.

Honestly, this solution in to our beloved Django should all be in one place with best practice put together for ease.

Help.

0 投票
1 回答
1570 浏览

django - Django:模型上缺少外部信号回调函数

嘿,我试图让信号 pre_save 在我的模型上工作,但外键或其他东西似乎有问题。我的模型是这样的:

这是处理和保存表单的地方:

这是我的信号接收器功能

这是一个例外:

无法在 0x21eef86c 处分配“django.db.models.fields.related.ForeignKey 对象”:“Log.project”必须是“Project”实例。

@the line ---> log.project = sender.project.field in

project_blog_entry_signal() 函数

发送者对象似乎没有将项目作为模型实例传递,而是作为外键实例传递。这是为什么?

0 投票
2 回答
1617 浏览

django - 是否可以在 Django 中选择性地抑制 post_save (或其他)信号?

我想知道是否可以在对象创建时选择性地抑制 Django 信号(例如post_savepost_init),或者,向其发送某些参数。

我拥有的是一个User对象,它可以在我的代码中以多种不同的方式和位置创建。因此,为了自动Profile为每个对象分配一个自定义对象User,我使用了post_save信号。但是,在一种特定情况下,我想将额外的信息绑定到创建的Profile对象。将它作为参数传递给post_save信号会很棒,但看起来不可能。

另一种选择是手动创建Profile对象,但是在保存之后我需User要这样做,否则Profile无法绑定到User实例。User但是,保存实例会导致Profile通过信号调用的函数创建另一个实例。

而且我不能只获取刚刚创建的Profile对象,因为这会导致'Profile' object is unsubscriptable错误。有什么建议吗?

更新:

以下是可能情况的示例:

如何将方法中的变量extra_param传递signup给 createUserProfile 方法,并将其作为Profile对象的一部分存储在哪里?

0 投票
8 回答
23289 浏览

python - 防止在 Django 模型中删除

我有这样的设置(针对这个问题进行了简化):

当一个员工即将被删除时,我想检查他是否连接到任何项目。如果是这样,删除应该是不可能的。

我知道信号以及如何使用它们。我可以连接到pre_delete信号,并使其抛出异常,如ValidationError. 这可以防止删除,但不会被表单等优雅地处理。

这似乎是其他人会遇到的情况。我希望有人能指出一个更优雅的解决方案。

0 投票
1 回答
3930 浏览

python - 如何检测何时添加/删除 Django 模型的对象?

添加或删除Foo类型的对象时,我需要进行相同的计算。如何检测Foo模型对象的添加/删除?例如:

我可以避免这两种方法中的代码重复吗?

使用信号,您可以像这样实现它

0 投票
1 回答
1400 浏览

django - 基于另一个模型中的新对象从一个模型创建对象(Django)

对 Django (1.2) 来说相当新,但只是测试一些东西。

我的头疼是想办法在创建 Product 对象时创建一系列 SKU 对象。


我最初尝试在 Product.save 中处理这个问题,但可惜没有骰子。然后我尝试了这个信号设置:

我见过的一些例子要求发送者类保存方法有这样的东西:

......这就是我所在的地方。此设置不会引发任何错误,但也不会创建所述 SKU。

如果我在任何这些信号方面都偏离了方向,任何指针都将不胜感激。或者,如果有另一种技术来完成类似的壮举,那也很棒。

干杯!

0 投票
2 回答
1360 浏览

python - 从 django-admin 命令发送 django 信号?

我有一个不寻常的问题。在我的 django 应用程序中,我使用信号发送电子邮件。除了从 django-admin 命令触发的信号 - django.core.management.base.NoArgsCommand (通过 manage.py 运行)之外,所有信号都有效。

我在不同的地方检查了我的信号,除了这个地方它都可以工作。

这是我发送信号的代码:

难道我做错了什么?

另外,有没有更简单的方法可以在一天内查看日期?

谢谢你的任何建议