2

Django 1.3以前では、以下を使用して特定のユーザーにメッセージを送信できました。

user.message_set.create(message='some message text')

Django 1.4以降、この機能は削除され、メッセージングフレームワークが採用されました。メッセージングフレームワークは次の構文を使用します。

info(request, 'some message text')

request.userのユーザーだけでなく、古い方法で許可されているように、特定のユーザーのメッセージをキューに入れることができるかどうか疑問に思っています。したがって、ビューでは、次のようなことを実行できるようにしたいと思います。

susy = User.objects.get(username='susy')

# send a message to susy even though request.user is john
info(susy, 'some message text')
4

1 に答える 1

0

メッセージのデフォルトのストレージエンジンはユーザーCookieになりました。つまり、現在のユーザー以外のユーザーのメッセージを保存することはできません。これを回避するには、セッションバックエンドを使用して、必要なユーザーのセッションをフェッチし、そこに直接メッセージを書き込むことができます。バックエンド自体がソースにどのように実装しているかを確認し、同じアプローチを使用してください。

明らかに、セッションがCookieベースの場合も、これは機能しません。

ソリューションの信頼性が必要で、アプリの構成に依存しない場合は、メッセージ処理用のカスタムデータベースベースのソリューションを作成する必要があります。たとえば、messagesフレームワーク用に独自のデータベースベースのストレージエンジンを実装できます。

于 2012-04-19T07:12:10.427 に答える