Django:使用基于类的通用视图访问模板中的模型数据

时间:2014-09-30 22:21:14

标签: django django-views

我正在尝试在模板中显示模型数据。 当我没有任何过滤,它工作正常!

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 %}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

在扩展通用ListView时,我认为您需要一个名为get_queryset的方法而不是get_object

编辑:

关于您的修改,您的模板存在问题

{% for user in data %}

应该是

{% for user in object_list %}

但我怀疑这里有更深层次的问题难以破译。我的建议是更仔细地查看您的代码和Django文档,并可能切换到自定义的书面视图,直到您更舒服。 :)