作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 m2m_changed
signal触发我的应用程序中的一些操作。但是,signaltest()
的打印输出表明我仅在 pre_clear
和 post_clear
操作上收到信号。我的 models.py 看起来像这样:
class Entry(models.Model):
objects = managers.MyEntryManager()
...
fields = models.ManyToManyField('Field', through='EntryField')
class Field(models.Model):
name = models.CharField(max_length=64, unique=True)
description = models.CharField(max_length=256, blank=True)
class EntryField(models.Model):
entry = models.ForeignKey('Entry')
field = models.ForeignKey('Field')
value = models.CharField(max_length=256)
def signaltest(**kwargs):
print kwargs['action']
signals.m2m_changed.connect(signaltest, sender=Entry.fields.through, weak=False, dispatch_uid='signaltest')
EntryField
对象是使用以下代码在代码中的其他位置创建的:
some_entry.fields.clear()
models.EntryField.objects.get_or_create(
entry=some_entry,
field=some_field,
defaults = { 'value': field_value }
)
第一个调用负责我收到的 pre_clear
和 post_clear
事件。但是,第二次调用不会生成任何信号。
在我看来django bug #13757与这种(错误)行为有关,但我可能遗漏了一些东西。
有没有办法“重新连接”信号(也许使用除 m2m_changed
之外的其他信号),以便在 EntryField
时生成 post_save
信号> 已创建?
最佳答案
你能尝试一下吗?
def signaltest(**kwargs):
print kwargs['instance']
print kwargs['created']
signals.post_save.connect(signaltest, sender=EntryField, weak=False, dispatch_uid='signaltest')
关于django m2m_changed 信号通过模型自定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689721/
我是一名优秀的程序员,十分优秀!