2016-04-08 55 views
0

我是django和django_tables2的新手。我正在嘗試在我的應用程序視圖中使用django_tables2來創建表格。我想利用這個link作爲tutorial.In我IndexView我有以下幾點:Django_tables2 data_list

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

我出現以下錯誤:

name 'data_list' is not defined

如何導入和使用data_list?

感謝您的任何幫助。

回答

0

您的視圖可以是這個樣子:

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

我使用該代碼得到以下錯誤「'return'outside function」。 –

+0

對不起我的壞。我認爲在這種情況下,你不應該使用通用視圖,因爲它們不會給你帶來任何好處。所以只要定期看。 –

0

我假設你想在表格中顯示的所有訊息。 所以你做:

模型= Post.objects.all()

您然後填充表與帖子:

表= PostTable(模型)

你缺少一個表類型,你有一個tables.py?

而data_list是未定義的,它是一個變量,而不是某種在django_tables2中定義的類型。你需要讓data_list等於某些東西(例如模型),因爲那就是你試圖填充表格的樣子。

+0

以下已更改table = PostTable(模型),但我得到一個「名稱」PostTable'沒有定義「錯誤 –

+0

你做了一個tables.py併爲它創建一個表後模型? –

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") 

然後填寫該表有一個QuerySet,

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()

相關問題