使用 django-tables2 时出错 - 应为 table 或查询集,而不是 'str'
Error Using django-tables2 - Expected table or queryset, not 'str'
我正在尝试使用 django-tables2 和 运行 为我的应用程序创建一些表,但遇到了一些困难。我正在使用 Python 2.7 和 Django 1.7。我正在按照教程进行操作,但我 运行 遇到了问题。
我到了需要创建 Table class 进行自定义的地步。但是,每当我这样做时,我都会收到以下错误:
Expected table or queryset, not 'str'.
完成 some research 后,我似乎使用的是旧版本的 django-tables2。但是,我昨天才使用 pip install django-tables2
安装它,并在半小时前更新了它。知道如何让 django-tables2 正常工作吗?
编辑 - 问题已解决。我使用的是 {% render_table people %}
而不是 {% render_table table %}
嗯,我认为你的问题不在于 django-tables2 的版本。在这里,我认为当您将变量从视图传递到模板时,您传递的是字符串而不是 queryset/table class 对象。对于工作示例:
Table class:
class SomeTable(tables.Table):
class Meta:
model= SomeModel
attrs = {"class": "paleblue"}
查看Class:
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 -->
或者您可以直接发送查询集来呈现 table,例如:
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 -->
我也遇到了这个问题。您应该做的第一件事是检查您的更新:
sudo pip install django-tables2 --upgrade
sudo pip install django-tables2-reports --upgrade
升级也没有解决我的问题。
如果您已经升级了这些版本。你应该检查你的实现。如果您正在使用基于 Class 的视图并且您可能实现了视图、模板、table。您可能忘记了网址:
/* 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"
有同样的问题。我忘记在视图的参数中添加SingleTableMixin
class
根据django-tables2 documentation:
在 tutorial/views.py 中,class 名称是 PersonListView
here
我将 class 名称从 PersonListView
更改为 PersonTableView
并且还在 urls.py.
中进行了此更改
这样做我的问题就解决了。
为什么会出现这个问题?
请任何人告诉我。
我正在尝试使用 django-tables2 和 运行 为我的应用程序创建一些表,但遇到了一些困难。我正在使用 Python 2.7 和 Django 1.7。我正在按照教程进行操作,但我 运行 遇到了问题。
我到了需要创建 Table class 进行自定义的地步。但是,每当我这样做时,我都会收到以下错误:
Expected table or queryset, not 'str'.
完成 some research 后,我似乎使用的是旧版本的 django-tables2。但是,我昨天才使用 pip install django-tables2
安装它,并在半小时前更新了它。知道如何让 django-tables2 正常工作吗?
编辑 - 问题已解决。我使用的是 {% render_table people %}
而不是 {% render_table table %}
嗯,我认为你的问题不在于 django-tables2 的版本。在这里,我认为当您将变量从视图传递到模板时,您传递的是字符串而不是 queryset/table class 对象。对于工作示例:
Table class:
class SomeTable(tables.Table):
class Meta:
model= SomeModel
attrs = {"class": "paleblue"}
查看Class:
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 -->
或者您可以直接发送查询集来呈现 table,例如:
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 -->
我也遇到了这个问题。您应该做的第一件事是检查您的更新:
sudo pip install django-tables2 --upgrade
sudo pip install django-tables2-reports --upgrade
升级也没有解决我的问题。
如果您已经升级了这些版本。你应该检查你的实现。如果您正在使用基于 Class 的视图并且您可能实现了视图、模板、table。您可能忘记了网址:
/* 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"
有同样的问题。我忘记在视图的参数中添加SingleTableMixin
class
根据django-tables2 documentation:
在 tutorial/views.py 中,class 名称是 PersonListView
here
我将 class 名称从 PersonListView
更改为 PersonTableView
并且还在 urls.py.
这样做我的问题就解决了。
为什么会出现这个问题? 请任何人告诉我。