【问题标题】:django signals: receiver and proxy model?django 信号:接收器和代理模型?
【发布时间】:2014-03-17 21:14:41
【问题描述】:

我在post_save 信号上设置了接收器,我希望通过将发送器设置为主模型来捕获模型的所有代理的信号,但它似乎不起作用:

class MyObject(models.Model):
    ....

class MyObjectProxy(MyObject):

    class Meta:
        proxy = True

# The receiver
# How to avoid writing another one for sender=MyObjectProxy ?
@receiver(post_save, sender=MyObject)
...

发生这种情况时,我的接收器不会被触发:

obj = MyObjectProxy()
obj.save()

这正常吗? 我必须为每个代理设置一个接收器吗? 我可以将sender 设置为模型列表吗?

谢谢。

【问题讨论】:

  • 什么是MyObjectProxy
  • 代理模型,我正在更新我的问题以使其更清晰。
  • 嗯。保存模型实例时会触发信号。为什么要在模型类上调用 save()?
  • 是的,我在示例中犯了一个错误。我改了。
  • @Michael 你当时解决了这个问题吗?我在这里遇到了同样的问题。

标签: django django-signals


【解决方案1】:

到目前为止,我认为模型列表是唯一可行的方法。有一个关于该特定问题的open discussion

【讨论】:

  • 所以我可以拥有sender=[] 吗?谢谢
  • 实际上不,你不能。 receiver 装饰器只接受一个信号(或一个信号列表)和一个作为 kwarg 的发送者。
猜你喜欢
  • 2013-10-21
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2016-04-27
  • 2013-12-18
  • 1970-01-01
  • 2015-08-03
  • 2019-01-08
相关资源
最近更新 更多