2012-06-18 3 views
11

新しいという記事がサイトに追加されるたびに、Djangoのpost_saveシグナルを使用してユーザーに電子メールを送信しています。ただし、すでに作成された記事の場合は、save()メソッドを使用するたびに新しいメールを受信します。 NEWエントリーが追加されたときにのみ電子メールを受信する方法は? instance.idの確認事前Djangoは新しいエントリのみのシグナルを受け取ります

答えて

28

post_saveシグナルは、instanceが作成されたかどうかを示すブール値createdを受け取ります。

def my_callback(sender, **kwargs): 
    if kwargs['created']: 
     print('Instance is new') 
+0

ありがとう!これは魅力的に機能しました。 –

0

おかげで、インスタンスが「新」であるかどうかを決定する良い方法です。これは、データベースによって自動的に生成されたIDを使用する場合にのみ機能します。 「:;真の新しいレコードが作成された場合はブール作成」

+0

post_save信号IIRCでは動作しません。その時点でインスタンスには既にIDがあります。 –

関連する問題