Django技术问题:如何获取创建者用户名而非ID?item.r.username无效
问题原因与解决方案
核心错误
你在模板中的字段访问逻辑有误:
Rec模型本身没有username字段,username是关联用户模型的属性,必须通过外键字段creator间接访问,不能直接写{{ item.r.username }}。- 模板里的
{{ item.r.author_id }}同样错误,模型中外键字段名为creator,对应的ID字段应为creator_id或creator.id。
修正后的模板代码(lists.html)
{% for item in lists %} {{ item.r.creator.username }} {# 正确访问关联用户的用户名 #} {{ item.r.creator_id }} {# 正确获取外键对应的ID #} {{ item.r.bornplace }} {% endfor %}
可选代码优化
你的views.py里将QuerySet转为字典列表的操作完全多余,直接传递QuerySet给模板更简洁:
# views.py 优化版 def lists(request): rec_list = Rec.objects.all() context = {'rec_list': rec_list} return render(request, 'lists.html', context)
对应简化后的模板:
{% for item in rec_list %} {{ item.creator.username }} {{ item.creator_id }} {{ item.bornplace }} {% endfor %}
内容的提问来源于stack exchange,提问作者Agora99
相关产品推荐
相关产品推荐

