Django_tables2 data_list

时间:2016-04-08 03:56:54

标签: python django django-tables2

我是django和django_tables2的新手。我试图在我的应用程序视图中使用django_tables2来创建一个表。我正在尝试使用此link作为教程。在我的IndexView中,我有以下内容:

在我的view.py

class IndexView(generic.ListView):
    model = Post.objects.all()
    template_name = 'post/index.html'
    table = Post(data_list)
    RequestConfig(request).configure(table)

在我的index.html中:

{% load render_table from django_tables2 %}
{% block content %}
    <h1>Posts</h1>
    {% render_table post_list %}
{% endblock %}

我收到以下错误:

  

名称'data_list'未定义

如何导入和使用data_list?

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您的观点可能如下所示:

def IndexView(request):
    template_name = 'post/index.html'
    return render(request, template_name, {"post_list": Post.objects.all()})

答案 1 :(得分:0)

我假设您正试图在表格中显示所有帖子。 所以你已经完成了:

model = Post.objects.all()

然后使用帖子填充表格:

table = PostTable(model)

您缺少表格类型,是否有table.py?

并且data_list是未定义的,它是django_tables2中不是某种定义类型的变量。你需要使data_list等于某些东西(例如模型),因为这就是你试图填充表的样子。

答案 2 :(得分:0)

如果未定义PostTable,请先在views.py中定义,如下例所示:

class ProjectTable(tables.Table): 
    title = tables.LinkColumn('project-detail',args=[A('pk')],verbose_name="Title")
    amount = tables.Column(verbose_name="Project Funds")
    start = tables.Column(verbose_name="Project Started")
    end = tables.Column(verbose_name="Project Ended")
    location = tables.Column(verbose_name="Project Location")

然后使用查询集

填充该表
def list_projects(request):
    projects = Project.objects.all()
    etable = ProjectTable(projects)
    RequestConfig(request, paginate={"per_page": 7}).configure(etable)
    return render(request, "projectsapp/list.html", {'table':etable})

所以在示例中,data_list等同于项目,这意味着您必须使用从FOO.objects.all()生成的查询集填充PostTable