我正在尝试使用django-tables2为我的应用程序创建一些表并遇到一些困难。我使用的是Python 2.7和Django 1.7。我正在按照教程,遇到了问题。
我达到了需要创建Table类以进行自定义的程度。但是,每当我这样做时,我都会收到以下错误:
预期的表格或查询集,而不是' str'。
执行some research后,我看起来正在使用旧版本的django-tables2。但是,我昨天使用pip install django-tables2
安装了它,并在半小时前更新了它。知道我怎么能让django-tables2正常工作吗?
编辑 - 问题已解决。我使用{% render_table people %}
代替{% render_table table %}
答案 0 :(得分:6)
我也遇到了这个问题。您应该做的第一件事是检查您的更新
sudo pip install django-tables2 --upgrade
sudo pip install django-tables2-reports --upgrade
升级也没有解决我的问题
如果您已经升级了这些版本。您应该检查您的实施。如果您使用的是基于类的视图,并且您非常确定实现了视图,模板,表。你必须忘记网址
所以网址应该是这样的。
/* I give the example with respect to other post*/
urls.py /*Same dic with table.py,models..etc*/
from .views import SomeTableView
urlpatterns = patterns('',
url(r"^$", SomeTableView.as_view(), name="index"),
)
如果它不是您网站的索引,您可能需要更改r" ^ $"和name =" index"
答案 1 :(得分:4)
我觉得你的问题不在于django-tables2的版本。在这里,我认为当您将视图中的变量传递给模板时,您将传递一个字符串而不是一个queryset / table类对象。对于工作示例:
表类:
class SomeTable(tables.Table):
class Meta:
model= SomeModel
attrs = {"class": "paleblue"}
查看课程:
class SomeTableView(SingleTableView):
model = SomeModel
template_name = 'test.html'
table_class = SomeTable
模板:
{% load render_table from django_tables2 %}
{% render_table table %} <!-- Here I am passing table class -->
或者您可以直接发送查询集来呈现表格,如:
class SomeView(TemplateView):
def get(self, request, *args, **kwargs):
data = SomeModel.objects.all()
context = self.get_context_data(**kwargs)
context['table'] = data
return self.render_to_response(context)
并像这样呈现:
{% load render_table from django_tables2 %}
{% render_table table %} <!-- Here I am passing queryset -->
答案 2 :(得分:0)
有同样的问题。我忘记在视图类的参数中添加SingleTableMixin
答案 3 :(得分:0)
根据django-tables2 documentation:
在 tutorial/views.py 中,类名是 PersonListView
here
我将班级名称从 PersonListView
更改为 PersonTableView
并且还在 urls.py 中进行了此更改。
通过这样做,我的问题得到了解决。
为什么会出现这个问题? 请任何人告诉我。