Saleh
Saleh

Reputation: 294

lookup first_name having username in django

I am trying to get a first_name and last_name for logged in user. I could get them but they are displayed as :

<QuerySet [{'first_name': 'steven'}]>

I want to display only steven

here is the view function:

def user_profile(request):
username = None
if request.user.is_authenticated():
    username = request.user.username
    pk = request.user.id
    first_name = MyUser.objects.filter(pk=pk).values('first_name')


context = {
    'username': username,
    'pk' :pk,
    'first_name': first_name,
}

return render(request, 'path/to/user_profile.html', context)

in the template file:

{{first_name}}

Upvotes: 1

Views: 31

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477769

You make it rather complicated: request.user is a User object. So you can fetch the .first_name and .last_name from it directly:

def user_profile(request):
    if request.user.is_authenticated():
        context = {
            'username': request.user.username,
            'pk': request.user.pk,
            'first_name': request.user.first_name,
        }
    else:
        context = {
            'username': None,
            'pk' : None,
            'first_name': None,
        }

    return render(request, 'path/to/user_profile.html', context)

So this instance is already loaded. Sure you can fetch it with a query. But why do duplicated work?

Upvotes: 2

Related Questions