为什么表在django-tables2中使用自定义表模板没有显示数据?

时间:2018-03-28 00:01:05

标签: django django-tables2

我正在使用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查询。我不知道为什么会这样。

0 个答案:

没有答案