Получить имя пользователя, а не просто идентификатор в списке просмотра - PullRequest
0 голосов
/ 27 августа 2018

Я программирую в веб-приложении, где пытаюсь отобразить имя пользователя в Списке, но всегда получаю только идентификатор.

Вот код представления списка:

activities = Activity.objects \
        .annotate(day=ExtractDay('created'), month=ExtractMonth('created'), year=ExtractYear('created'))\
        .values('user', 'day', 'month', 'year') \
        .annotate(total=Count('user')) \
        .order_by('user') \

Получение пользователя:

        for activities_data in activities:
        user = activities_data['user']

код модели:

class Activity(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'), on_delete=models.CASCADE)

Я действительно стараюсь все, но я не знаю, как с этим справиться.

Не могли бы вы помочь мне, как получить полное имя пользователя?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Пока вы просто получаете первичный ключ объекта, о котором вы говорили.

Вы должны выполнить поиск в базе данных, ища правильное имя пользователя.

for activities_data in activities:
    #For each activities_data you get the related user object
    user = activities_data.objects.get(user=username)
    #From this user object you got, extract his name
    text_to_display = user.username
0 голосов
/ 29 августа 2018

Наконец-то я с этим справился.

Я использовал simple_tag:

@register.simple_tag
def user_name(username):
    user = User.objects.get(pk=username)

    return user

Тогда в HTML это выглядит так:

{% user_name user %}
0 голосов
/ 28 августа 2018

В вашей пользовательской модели вы можете установить строковое представление модели следующим образом:

def __str__(self):
    return '%s %s' % (self.first_name, self.last_name)
...