2010-06-03 7 views
3

J'ai une mini application où les utilisateurs peuvent se connecter, afficher leur profil, et se suivent. «Suivre» est une relation comme une relation «amie» régulière dans les communautés virtuelles, mais elle n'est pas nécessairement réciproque, ce qui signifie que l'on peut suivre un utilisateur, sans que l'utilisateur soit obligé de suivre la personne qui le suit. mon problème est: si je suis un utilisateur connecté, et je navigue vers un profil X, et appuyez sur le bouton suivre, comment puis-je prendre l'identifiant de profil actuel? (Profil actuel signifiant le profil que je, l'utilisateur connecté , je visualise en ce moment)django obtenir l'ID de l'utilisateur actuel

la vue.

def follow(request): 
     if request.method == 'POST': 
    form = FollowForm(request.POST) 
    if form.is_valid(): 
    new_obj = form.save(commit=False) 
    new_obj.initiated_by = request.user 
    u = User.objects. what here? 
    new_obj.follow = u 
    new_obj.save() 
    return HttpResponseRedirect('.')  
    else: 
     form = FollowForm()  
    return render_to_response('followme/follow.html', { 
     'form': form, 
     }, 
     context_instance=RequestContext(request)) 

merci à l'avance!

Répondre

0

Si vous ajoutez le profil de l'utilisateur à votre formulaire, vous pouvez le transmettre avec votre message.

Il y a plusieurs façons de le faire. Vous pouvez ajouter un champ caché à votre FollowForm (transmettre le profil en tant qu'instance).

Vous pouvez le faire plus manuellement en insérant un champ caché tel que:

<input type="hidden" name="profile_id" value="{{ profile.id }}" /> 

Ensuite, vous pouvez changer votre code ci-dessus:

u = User.objects.get(request.POST['profile_id']) 

Ou, peut-être vous avez déjà l'utilisateur du profil id à votre avis?

+0

il semble juste, mais je reçois une erreur: besoin de plus que 1 valeur à décompresser et je ne vois pas pourquoi j'ai plus d'une valeur dans la déclaration de 0. merci! – dana

+2

Tout le monde peut changer la valeur du champ caché ... –

15

Essayez request.user.id. Mais il y a une meilleure bonne pratique. laisse moi voir.

http://docs.djangoproject.com/en/1.2/topics/db/optimization/ est un bon début et est plein de bonne pratique. Dans votre cas, utilisez request.user.id.

+0

oui. l'idée est de ne pas prendre l'identifiant de l'utilisateur actuellement connecté (dans mon exemple ci-dessus je suis connecté) mais l'identifiant de l'utilisateur dont je visite le profil et que je souhaite suivre. Merci beaucoup de votre intérêt! – dana

+1

ok, imaginez l'URL du profil est quelque chose comme/user/ /, alors l'action pour suivre certaines personnes peut être repris à un POST sur une URL comme/user//follow/où id est l'utilisateur.id des gens que vous voulez suivre. – dzen

+0

oui. cela semble logique, et juste :) je vais l'essayer maintenant, et afficher les résultats. Merci ! :) – dana