当前位置: 首页 > 面试题库 >

为什么Django post_save信号给我pre_save数据?

谷梁承宣
2023-03-14
问题内容

我试图将“信息”对象连接到许多“客户”(请参见下面的代码)

更新一个信息对象后,我想向与该信息连接的每个客户发送电子邮件。

但是,当我记录信号接收到的sold_to字段时,在保存之前,我总是会得到类似的数据。

我猜这是因为它的ManyToManyField和数据存储在单独的表中,但是在更新所有关系之后不应该调用post_save信号吗?

有人提出解决方案的建议吗?

class Customer
    name = models.CharField(max_length=200)
    category = models.ManyToManyField('Category',symmetrical=False)
    contact = models.EmailField()

class Information
    name = models.CharField(max_length=200)
    email = models.EmailField(max_length=200)
    mod_date = models.DateTimeField(auto_now=True)
    sold_to = models.ManyToManyField(Customer, null=True, blank=True)


def send_admin_email(sender, instance, signal, *args, **kwargs):
    from myapp import settings
    for cust in instance.sold_to.all():
        settings.debug(cust.name)

post_save.connect(send_admin_email, sender=Information)

编辑:#django中的apollo13提醒我这一点:“正如您所发现的,相关项(保存到多对多关系中的内容)未保存为模型的保存方法的一部分。” -
http://groups.google.com/group/django-
users/msg/2b734c153537f970

但是自从2006年7月9日发布以来,我真的非常希望有一个解决方案。


问题答案:

有一个开放的票,你所面临的问题在这里。您可以关注它何时发布,也可以尝试应用它提供的补丁,看看是否有帮助。



 类似资料:
  • 问题内容: 我有一个简单的程序: 当我运行该程序时,我看到的只是用于输出。我原本希望我们会遇到第一轮,然后是,然后是etc。 这是由于这样的事实,一旦我们尝试在左侧重新声明,其值就会重置为? 如果有人可以指出我的详细情况,那将很棒。 更改为,似乎正在按预期方式打印数字。我对它达到最大32位值的速度感到惊讶! 问题答案: 该问题是由于整数溢出引起的。 在32位二进制补码算法中: 确实确实开始具有2的

  • 问题内容: 我的Python程序中有一个保存函数,如下所示: 在此,n为“ 1”。 我收到如下错误: 在外壳中执行相同的加载后,我没有收到任何错误: 为什么会有问题? 问题答案: 您可能从os模块导入了星号: 因此您使用了错误的打开功能。(我想您可以简单地完成,但是可能性较小。)通常,应避免这种导入样式,在实际情况下应避免使用。

  • 问题内容: 以下语句: 因错误而失败: 为什么在这里需要演员表? 我发现了几篇文章,解释了为什么您不能进行反向操作(将T分配给a),但这是显而易见的(可以理解)。 注意:我在Eclipse Luna下对此进行编码,所以我不知道这是Luna Quirk还是泛型中确实不了解的东西。 问题答案: 协方差vs协方差vs不变性 是 不变的 。 结果是, 是 不是一个亚型 的 在Java中,变量可以保存 相同

  • 我使用信号量,我希望当列表大小为零时,线程等待其他线程,但为什么信号量不停止执行?信号量不是像notify和wait一样工作吗? 结果:add remove add Exception in thread“Thread-2”java.lang.IndexOutOfBoundsException:Index:0,Size:0

  • 我编写了一个非常简单的Flink流媒体作业,它使用从Kafka获取数据。 这工作得很好,每当我在Kafka上将某些内容放入主题时,它都会被我的Flink作业接收并处理。现在我试图看看如果我的Flink作业由于某种原因不在线会发生什么。所以我关闭了flink作业并继续向Kafka发送消息。然后我再次开始我的Flink作业,并期望它会处理同时发送的消息。 然而,我得到了以下信息: 因此,它基本上忽略了

  • 我有一个Python/Flask Web应用程序,我正在通过Gunicorn在Amazon ECS上的docker映像中部署它。一切都很顺利,然后突然,包括最后一个成功的请求,我在日志中看到了这一点: < code >[2017-03-29 21:49:42 0000][14][DEBUG]GET/heat map _ column/e4c 53623-2758-4863-af06-91bd 00