2009-06-09 11 views
-1

est ce que quelqu'un sait comment se connecter le nom d'utilisateur qui est actuellement en loged dans form.pyforme django

+1

en double de la question de ha22109 posée ici: http: // stackoverflow. com/questions/939157/comment stocker le nom de l'utilisateur connecté –

+0

Jarret, vous n'avez pas encore remarqué une autre chose étrange. Cette question est aussi "ha22109". Et dans cette dernière question aussi, on lui a demandé de répéter la question déjà posée. – simplyharsh

+0

harshh ... en fait, j'ai remarqué que :-) Aussi près que je puisse dire, ha22109 cherchait un exemple de code verbatim, que Van Gale a maintenant fourni, donc j'espère que a) l'exemple est suffisamment prêt à copier/coller, et b) ce tour va enfin aider. –

Répondre

-1

{{}} request.user

+0

qui n'aidera pas le traitement des formulaires. – SingleNegationElimination

+0

Vous pourriez très bien le stocker dans un champ de formulaire caché. Je suis d'accord L'approche de Van Gale est djangoic et élégante. Mais une solution simple est certainement de stocker un élément de formulaire caché contenant userid. –

5

Vous avez besoin d'une méthode __init__ sur votre formulaire, et passez demande. utilisateur en tant qu'argument.

Par exemple:

class MyModelForm(forms.ModelForm): 

    # Notice the custom argument 'user' 
    def __init__(self, user, *args, **kwargs): 
     super(MyModelForm, self).__init__(*args, **kwargs) 
     # do something here with user, such as calling log.debug() 

    class Meta: 
     model = MyModel 

Maintenant dans votre views.py, vous créez la forme comme ceci:

form = MyModelForm(request.user) 

ou, si vous traitez la demande POST:

form = MyModelForm(request.user, request.POST) 

Modifier pour mettre à jour la réponse après un commentaire.

Pour obtenir l'utilisateur dans le site d'administration, vous devez ajouter la méthode suivante à votre modèle d'administration dans admin.py:

def save_model(self, request, obj, form, change): 
    # Do something with request.user here 
    obj.save() 

Bien sûr, cela signifie que vous avez seulement accès à l'utilisateur lors d'un enregistrement . Si vous avez besoin d'un accès à request.user pour d'autres parties de l'administrateur, comme QuerySets de filtrage, voir ce post par James Bennett pour plus d'informations:

Users and the admin

+0

Je ne fais pas de vue pour cela. Puis-je le faire dans mon admin.py 'form = MyModelForm (reuest.user) J'ai seulement form.py et admin.py – ha22109

Questions connexes