我试着去一个“信息”对象连接到许多“客户”(见下面的代码)为什么Django post_save信号会给我pre_save数据?
当一个对象的信息更新,我想将电子邮件发送到连接到信息每一位客户。
但是,当我登录信号收到的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)
编辑:apollo13在#django提醒我这一点: “有关的项目(的东西被保存到许多一对多的关系) 不会被保存为模型的保存方法的一部分,因为你已经发现了。“ - http://groups.google.com/group/django-users/msg/2b734c153537f970
但自从2006年7月9日以来,我真的很希望有一个解决方案。
感谢您的快速回复。我尝试了这个补丁,经过一些黑客攻击后,我开始工作。下面将发布解决方案。 – schmilblick 2009-08-04 09:09:12