我正在尝试将数据传递到模板,但没有显示
<div id="table">
<table id="table_id">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
{% for key, value in users.items %}
<tr>
<td>{{ key }}{{ value }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
这是视图
@login_required
def event_detail(request, pk):
messages = Chat.objects.filter(room=pk)
users = Chat.objects.filter(room=pk).values('user__username').distinct()
event_users = Event.objects.filter(id=pk)
response_data = {
'messages': messages,
'pk': pk,
'users': users
}
return render(request, 'chat/event_detail.html', response_data)
我的表格未显示数据。
答案 0 :(得分:2)
users
不是字典,而是QuerySet。
{% for user_values in users %}
<tr>
{% for key, value in user_values.items %}
<td>{{ key }}: {{ value }}</td>
{% endfor %}
</tr>
{% endfor %}
编辑:
我对其进行了更改,以支持您使用.values()
。但是,除非您有充分的理由这样做,否则建议您使用ORM,.select_related('user')
和模型实例,而不要使用.values()
。简单可以胜过性能。
编辑2:
如果需要用户名列表,可以执行以下操作:
usernames = Chat.objects.filter(room=pk).values_list('user__username', flat=True).distinct()
这将更加清洁,并且仍然可以执行您最初想要的操作。只需命名变量以表明它只是用户名。
答案 1 :(得分:0)
您将在模板中发送查询集。你可以试试这个
{% for value in users %}
<tr>
<td>{{ value.user__username }}</td>
</tr>
{% endfor %}