2016-12-13 1 views
0

je le modèle suivant dans mon projet Django:Apporter de l'information dans django.contrib.auth.models.User Voir

from django.contrib.auth.models import User 

class Project(models.Model): 
    project_title = models.CharField(max_length=200) 
    project_description = models.CharField(max_length=200, default="") 
    created_date = models.DateTimeField('date created') 
    owner = models.ForeignKey(User) 

    def __str__(self): 
     return self.project_title 

Ce point de vue utilise le modèle de projet comme suit:

class ProjectView(generic.edit.UpdateView): 
    model = Project 
    fields = ['project_title','project_description'] 
    template_name = 'steps/project.html' 
    success_url = reverse_lazy('steps:index') 

Ma question est comment puis-je amener les champs de l'utilisateur dans mon ProjectView afin que je puisse les utiliser dans les modèles? En particulier, je voudrais afficher le nom et l'email de l'utilisateur connecté.

+1

placé sur demande, et non pas sur les vues. Vous pouvez donc écrire dans le modèle '{{user.username}}', ou '{{user.email}}'. et vous l'aurez –

Répondre

1

Informations sur l'utilisateur placées sur demande, pas sur les vues. Vous pouvez donc écrire dans le modèle {{user.username}} ou {{user.email}}. et vous l'aurez. Bien sûr, si user.is_authenticated

+0

Merci, cela a fonctionné! En passant, est-ce une habitude de bon ton de vérifier que l'utilisateur est authentifié dans ce cas? – MadPhysicist

+0

vous pouvez utiliser le décorateur '@ login_required' avant la vue –

1

dans votre écriture de modèle:

{% if request.user.is_authenticated %} 
    {{ request.user.username }} 
    {{ request.user.email }} 
{% endif %} 
informations utilisateur