2013-08-30 2 views
1

У меня есть шаблон, который отобразит все понравившиеся и понравившиеся человеку для определенного форума. В шаблоне он может отображать числа понравившихся и все имя пользователя, которому понравился этот форум. Но я хочу полное имя, а не имя пользователя (здесь это письмо). Как получить полное имя в шаблоне или, если возможно, из самого представления. Спасибо.как запросить полное имя в django

forums.html:

{% extends "base.html" %} 
{% load forum_tags %} 

{% block content %} 
<h2>Logged in as -- {{request.user}}</h2> 
<h1>Forums:</h1> 
    {% if forums.count > 0 %} 
     {% for forum in forums %} 
      <h2><a href="/forum/get/{{forum.id}}/">{{forum.question}}</a></h2> 
      <p>{{forum.body | truncatewords:"30"}}</p> 
      {% if user in forum.likes.all and forum.likes.count > 1 %} 
       <p><a href="/forum/delete_likes/{{forum.id}}/">Unlike</a> You and {{forum.likes.count | substract:1}} others liked</p> 
      {% elif user in forum.likes.all %} 
       <p>You liked it</p> 
      {% else %} 
       <p><a href="/forum/update_likes/{{forum.id}}/">Like</a></p> 
      {% endif %} 
      {% for likes in forum.likes.all %} 
       <li><a href="/get/{{likes.user}}">{{likes}}</a></li> 
      {% endfor %} 
     {% endfor %} 
    {% else %} 
     <p>Sorry! No forum to display.</p> 
    {% endif %} 

{% endblock %} 

фрагмент views.py:

def forums(request): 
    forums = Forum.objects.all() 
    c = {'forums': forums} 
    return render(request, 'forums.html', c) 

ответ

2

Если вы используете по умолчанию User модель с от django.contrib.auth.models, он имеет метод get_full_name, который можно использовать в ваш шаблон:

{{ user.get_full_name }} 

В противном случае вы можете использовать nt этот метод в вашей собственной модели User тоже. Любой метод, который не принимает аргументов, может быть вызван из шаблонов (если у них нет alters_data attribute set to True).

+0

Да, я использую форму модели пользователя по умолчанию, просто переопределяю ее, чтобы принимать электронную почту в качестве имени пользователя по умолчанию. Я попробовал это, '

  • {{likes}}
  • ', И я все еще получаю имя пользователя (то есть, письмо). – Robin

    +1

    Вызов 'get_full_name' находится в URL-адресе, на который указывает ваша ссылка, это то, что вы намеревались сделать? Для URL-адресов вы должны использовать [URL-реверсирование] (https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-resolution-of-urls), а не вручную созданные URL-адреса. –

    +0

    Я сожалею, что я должен был сделать, это: '

  • {{likes.get_full_name}}
  • ' вместо этого: '
  • {{likes}}
  • '. Спасибо огромное! – Robin

    Смежные вопросы