2012-04-19 6 views
2

Dans Django 1.3 et avant que vous pouvez envoyer un message à un utilisateur particulier à l'aide:cadre de message Django - Mésage utilisateur particulier

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

que de Django 1.4 cette fonctionnalité a été supprimée en faveur du cadre de messagerie. Le cadre de messagerie utilise la syntaxe suivante:

info(request, 'some message text') 

Je me demande s'il est possible de faire la queue un message pour un utilisateur particulier, comme l'ancienne méthode a permis, plutôt que pour l'utilisateur dans request.user? Ainsi, dans une vue, je veux être en mesure de faire quelque chose comme ce qui suit:

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

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

Répondre

0

moteur de stockage par défaut pour les messages sont maintenant les cookies de l'utilisateur, ce qui signifie que vous ne pouvez pas un message de magasin pour tout le monde, mais l'utilisateur actuel. Pour contourner ce problème, vous pouvez essayer d'utiliser le backend de session, extraire la session de l'utilisateur et y écrire directement un message. Il suffit de vérifier comment backend l'implémente dans sa source et utilise la même approche.

Évidemment, cela ne fonctionnera pas si vos sessions sont aussi basées sur des cookies.

Si la solution doit être fiable et ne pas dépendre de la configuration de l'application, vous devez créer une solution personnalisée basée sur la base de données pour la gestion des messages. Par exemple, vous pouvez implémenter votre propre moteur de stockage basé sur la base de données pour le framework messages.

+0

Désolé, j'ai pris tellement de temps pour répondre, je n'ai pas eu l'occasion de revenir à ce que j'ai posé cette question, mais j'espère que bientôt. Je pense qu'il est regrettable que la fonctionnalité a été supprimée. Je pourrais finir par mettre en place mes propres messages. – joshcartme

+0

@josh, comment ça va si loin? :) Je suis intéressé par la façon dont vous l'avez fait. – ultrajohn

+0

@ultrajohn malheureusement, je n'ai jamais fini par prendre cela plus loin, donc je n'ai plus d'indices, désolé = / – joshcartme

Questions connexes