多くの「得意先」に「情報」オブジェクトを接続しようとしています(下のコードを参照)Djangoのpost_saveシグナルが私にpre_saveデータを与えるのはなぜですか?
情報オブジェクトが更新されると、情報に接続されている各顧客に電子メールを送信します。しかし
、私は常にデータを保存する前に、どのようなものであるかを取得信号recievesこと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)
編集:(物事が多対多の関係に保存されている) は、あなたのように、のは、メソッドを保存するモデルの一部として保存されていない 「関連項目:#djangoでapollo13はこれに私を警告発見した。 - http://groups.google.com/group/django-users/msg/2b734c153537f970
しかし、その7月9日から2006年以来、私は本当にこのためのソリューションがあります願っています。
お返事ありがとうございます。私はパッチを試して、少しハッキングした後、私はそれを動作させた。下に解決策を掲載します。 – schmilblick