Python 获取用户名而不仅仅是视图列表中的ID
我在网络应用程序上编程,我试图在列表视图中显示用户名,但我总是只得到id 以下是列表视图的代码:Python 获取用户名而不仅仅是视图列表中的ID,python,django,list,listview,Python,Django,List,Listview,我在网络应用程序上编程,我试图在列表视图中显示用户名,但我总是只得到id 以下是列表视图的代码: activities = Activity.objects \ .annotate(day=ExtractDay('created'), month=ExtractMonth('created'), year=ExtractYear('created'))\ .values('user', 'day', 'month', 'year') \ .anno
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)
我真的什么都试过了,但我不知道怎么处理
您能帮助我如何获取完整的用户名吗?在您的用户模型中,您可以这样设置模型的字符串表示形式
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
现在,您只需检索对象主键,即您提到的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
我终于解决了这个问题 我使用了简单的标签:
@register.simple_tag
def user_name(username):
user = User.objects.get(pk=username)
return user
然后在html中,它看起来像:
{% user_name user %}
我总是得到错误'int'对象没有属性'username',现在得到'dict'对象没有属性'objects',因为user=activities\u data.objects.get(user=username)您应该修改我键入的代码以适应您的应用程序上下文。不仅仅是复制和粘贴。但是如果你真的想这样做,更新你的帖子,提供包含User的模型类。我已经用simple_标签处理了这个问题(正如你在我的回答中看到的)。但是谢谢你的帮助你把它放在包含你的用户模型的models.py中,你的模型有first_name和last_name两个字段?我已经用simple_标签处理了这个问题(你可以在我的回答中看到)。但是谢谢你的帮助