【问题标题】:Django_tables2 data_listDjango_tables2 数据列表
【发布时间】:2016-07-26 15:05:29
【问题描述】:

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

在我看来.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?

感谢您的帮助。

【问题讨论】:

    标签: python django django-tables2


    【解决方案1】:

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

    模型 = Post.objects.all()

    然后用帖子填充表格:

    table = PostTable(模型)

    您缺少表格类型,您有 tables.py 吗?

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

    【讨论】:

    • 以下已更改 table = PostTable(model) 但我收到“未定义名称'PostTable'”错误
    • 您是否制作了一个tables.py 并为您在其中发布模型创建了一个表格?
    【解决方案2】:

    您的视图可能如下所示:

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

    【讨论】:

    • 我收到以下错误“'return' outside function”与该代码。
    • 对不起,我的错。我认为在这种情况下,您不应该使用通用视图,因为它们不会给您带来任何好处。因此,只需定期查看即可。
    【解决方案3】:

    如果 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多