在前(后)保存触发器中未分配ManyToMany字段

时间:2014-09-30 07:12:10

标签: python django django-signals django-orm

我试图在post_save触发器中使用ManyToMany字段。 一个例子

@receiver(post_save, sender=Post, dispatch_uid='update_post_images')
def update_post_images(sender, instance, using, **kwargs):
   post_save.disconnect(update_post_images, sender=Post, dispatch_uid='update_post_images')
   print 'before', instance.images.all()
   img = Image.object.get(pk=1469)
   instance.images.add(img)
   print 'after', instance.images.all()
   post_save.connect(update_post_images, sender=Post, dispatch_uid='update_post_images')

现在,当我看到django控制台时,我看到了我想要的确切内容。 print 'before'输出一个图像对象和print 'after' - 2个对象 但是当我从python控制台(manage.py shell)查询相同的post对象时,我发现只有一个Image。

请有人告诉我这个触发器的内容是什么

1 个答案:

答案 0 :(得分:0)

ManyToManyFields与其他带信号的字段的行为不同。查看m2m_changed Signal并在该信号上运行逻辑,而不是post_save信号。