获取用户名,而不仅仅是查看列表中的ID

时间:2018-08-27 20:57:16

标签: python django list listview

我正在使用Web应用程序进行编程,试图以列表视图用户名显示,但我总是得到ID。

这是列表视图的代码:

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 :(得分:1)

在用户模型中,您可以像这样设置模型的字符串表示形式

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

答案 1 :(得分:0)

目前,您只是在检索对象主键,即您所讨论的ID。

您应该在数据库中执行搜索以查找正确的用户名。

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

答案 2 :(得分:0)

最后我已经解决了。

我用过simple_tag:

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

    return user

然后在html中看起来像这样:

{% user_name user %}