私のDjangoアプリには、ニュースレターモデルがあります。今、私はニュースレター(とさえ再送それ)Djangoの管理者からの送信にできるようにしたいと思います。Django Adminのカスタムアクション
Model.save()
メソッドのフックでこれを行うことはできますが、モデルに結び付けられていない別の方法がありますか?
おかげ
私のDjangoアプリには、ニュースレターモデルがあります。今、私はニュースレター(とさえ再送それ)Djangoの管理者からの送信にできるようにしたいと思います。Django Adminのカスタムアクション
Model.save()
メソッドのフックでこれを行うことはできますが、モデルに結び付けられていない別の方法がありますか?
おかげ
Admin actionsは、簡単に管理者のリストページから選択した項目に対して実行できるカスタムアクションをフックアップすることができます。
管理者からやっている場合は、save()メソッドをオーバーライドする必要がありますが、AdminModel save ...が完全なモデル保存である必要はありません。あなたは電子メールのたくさんを電子メールで送信している場合
しかし、より良いアプローチは、後の処理のためにキューにメールを入れるdjango-mailerをインストールすることであろうし、新しい管理コマンドを提供します:send_mail。
ニュースレターを送信する準備ができたら、手動でpython manage.py send_mail
を実行してください。エラーのある電子メールは遅延キューに移動され、後で再送信することができます。
manage.py send_mail
をcronから実行すると、これを自動化できます。
あなたが本当に気に入って管理サイトからやりたいのであれば、django-chronographをインストールしてそこからsend_mailスケジュールを設定してください。
ModelAdmin.save()とModelの違いは何でしょうか。セーブ()? – Lorenzo
models.pyのモデルに保存する代わりに、admin.pyのadmin.ModelAdminクラスに保存することを意味します。 –
こちらのドキュメントをご覧ください:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#save-model-self-request-obj-form-change –
あなただけ
def send(modeladmin, request, queryset):
for data in queryset:
subject=data.title
message=data.mesage
for d in Users.objects.filter(newsletter=True):
email=d.email
sendemail = EmailMessage(subject, message+unsubscribe, '[email protected]',
[email], [],
headers = {'Reply-To': '[email protected]'})
sendemail.content_subtype = "html"
sendemail.send()
これは良い解決策であるように思わようなものに
を変更するには、このhttps://www.youtube.com/watch?v=WvL1cR2MgLI
を試すことができます。私は自分のサイトを更新するのは大きな問題ではないと思いますが、Django 1.1より前にどうやってこれをやったのですか? – Lorenzo
この機能は、実際にサードパーティのアプリとして開始されました:http://code.google.com/p/django-batchadmin/ –
更新のみ。 Djangoには、1.1以降のすべてのバージョンでAdminアクションが追加されました。http://docs.djangoproject.com/en/1.2/ref/contrib/admin/actions/ –