我正在尝试在模板中显示模型数据。 当我没有任何过滤,它工作正常!
class UserLogList(ListView):
context_object_name = 'data'
queryset = UserLog.objects.all().values('user_id__username','event_id','time')
但是,如果我想进行一些过滤,例如,如果我想根据user_id获取详细信息,其中user_id = 1.我可以从request
对象或self.request
对象获取用户ID
为实现这一目标,我在views.py
class DisplayUserActivity(ListView):
template_name = 'user_activity.html'
uid = self.request.user.id
def get_object(self):
uid = self.request.user.id
object = super(DisplayUserActivity,self).get_object()
object.data = UserLog.objects.filter(user_id = uid).values('user_id__username','event_id','time')
return object
和我的template
文件:
{% block content %}
<h2> Logs </h2>
<table border="1" style="width:50%">
<tr>
<th> User Name </th>
<th> Description </th>
<th> Time </th>
</tr>
{% for user in data %}
<tr>
<td> {{user.user_id__username}}</td>
<td> {{user.event_id}}</td>
<td> {{user.time}} </td>
{% endfor %}
</tr>
</table>
{% endblock %}
我错过了什么?
答案 0 :(得分:0)
在扩展通用ListView时,我认为您需要一个名为get_queryset的方法而不是get_object
。
编辑:
关于您的修改,您的模板存在问题
{% for user in data %}
应该是
{% for user in object_list %}
但我怀疑这里有更深层次的问题难以破译。我的建议是更仔细地查看您的代码和Django文档,并可能切换到自定义的书面视图,直到您更舒服。 :)