我試着去一個「信息」對象連接到許多「客戶」(見下面的代碼)爲什麼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