我想在Django_Table2元素中只选择几个字段。我一直在关注django_table2网站django_table2,但我对如何限制django_table2元素中使用的字段数量却找不到多少。这是我的代码。
这是我的项目view.py:
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.views import generic
from django.utils import timezone
from .models import Project
class IndexView(generic.ListView):
model = Project.objects.values("id","name","jobNumber", "contractor", "assigned_to", "created_date")
template_name = 'project/index.html'
def get_queryset(self):
return Project.objects.values("id","name","jobNumber", "contractor", "assigned_to", "created_date")
class DetailView(generic.DetailView):
model = Project
template_name = 'project/detail.html'
这是我的index.html模板:
{% load render_table from django_tables2 %}
{% block content %}
<h1>Projects</h1>
<ul>
{% for project in project_list %}
<li><a href="{% url 'project:detail' project.id %}">{{ project.name }}</a></li>
{% endfor %}
</ul>
{% render_table project_list %}
{% endblock %}
如何使用django_tables2限制显示的字段/列数?
答案 0 :(得分:1)
tutorial说“虽然简单,但直接将查询集传递给{%render_table%}不允许进行任何自定义。为此,您必须定义一个Table类。” API表明Table.Meta具有字段并排除属性,类似于ModelForms。
答案 1 :(得分:1)
一种方法是使用表类并添加元排除以删除所需的列:
class MyTable(tables.Table):
class Meta:
model = MyModel
exclude = ('unwanted_col', 'unwanted_col2',)
然后在视图逻辑中:
table = MyTable(data_list)
RequestConfig(request).configure(table)
return render(request, 'myapp/index.html', {'table': table})
我的views.py文件中使用的导入包含与该片段相关的代码:
import django_tables2 as tables
from django_tables2.config import RequestConfig
from django.shortcuts import render
并且索引html中有渲染表。