我正在使用django-tables从我的模型创建一个表格以在页面上显示它。
我创建了以下tables.py
文件:
class OpenBetsTable(tables.Table):
class Meta:
model = Bet
fields = ("date", "time", "competition", "home",
"visitor", "bookie", "bet", "stake", "odds")
attrs = {"class": "table table-striped table-sm table-bordered"}
empty_text = "Nothing to display"
我有一个基于类的视图,其中包含以下内容:
queryset = user_bets.filter(status__name="New").order_by("-timestamp")
table = OpenBetsTable(queryset)
RequestConfig(self.request, paginate={'per_page': 10}).configure(table)
context["table"] = table
在页面模板中,我添加了{% load django_tables2 %}
和{% render_table table %}
来呈现表格。
到目前为止,一切正常。
我想为表格使用自定义模板,因此我使用django-tables2提供的模板之一在template_name
中添加了OpenBetsTable
:
class OpenBetsTable(tables.Table):
class Meta:
model = Bet
template_name = "django_tables2/table.html"
fields = ("date", "time", "competition", "home",
"visitor", "bookie", "bet", "stake", "odds")
attrs = {"class": "table table-striped table-sm table-bordered"}
empty_text = "Nothing to display"
一切仍然正常。
作为旁注,有几种方法可以使用自定义表格模板,如Is it possible to custom django-tables2 template for a specific page in this case?所示。
因为我想使用自己的自定义表格模板,所以我创建了一个名为bets_table.html
的html文件。我刚从django-tables2 default table template复制了内容。
新表如下:
class OpenBetsTable(tables.Table):
class Meta:
model = Bet
template_name = "bets/bets_table.html"
fields = ("date", "time", "competition", "home",
"visitor", "bookie", "bet", "stake", "odds")
attrs = {"class": "table table-striped table-sm table-bordered"}
empty_text = "Nothing to display"
使用上表,呈现表格,标题显示正确但没有显示数据,它显示表格类中的empty_text
字符串。另一件有趣的事情是分页控件正确显示可用页面的数量。
我查看了django调试工具栏,发现相比之下,表与自定义表模板有一些缺少的SQL查询。我不知道为什么会这样。