当m2m_changed调用动作“pre_clear”时如何访问pk_set?

时间:2015-11-25 12:20:36

标签: django django-models django-signals

我想删除ManyToMany字段中的实现时使用m2m_changed信号。我在models.py

中编写了这段代码
class Unit(Model):
    # ....

class Package(Model):
    # ...
    Lesson = ManyToManyField(Unit, blank=True)

def toppings_changed(sender, **kwargs):
    if kwargs.get("pk_set") and kwargs.get("action") == "pre_clear":
        # get id of lesson to delete and do something with it
m2m_changed.connect(toppings_changed, sender=Packages.Lesson.through)

我想在Lesson模型中移除Package关系时执行某些操作。但当我删除一个关系pre_clear将会调用,我无法访问pk_set(它是无)。在课程模型中删除关系时,有没有办法访问Unit id。

1 个答案:

答案 0 :(得分:0)

根据文档。

pk_set ...
对于pre_clear和post_clear操作,这是None。
https://docs.djangoproject.com/en/dev/ref/signals/#m2m-changed