首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-tables2在排序和页面更改时刷新

django-tables2在排序和页面更改时刷新
EN

Stack Overflow用户
提问于 2012-06-25 07:44:01
回答 2查看 1.8K关注 0票数 1

我尝试使用django-tables2创建一个排行榜表格,允许用户按所有列进行排序、搜索和过滤。我没有做任何特别的事情,只是遵循了django-tables2中的文档。

下面是它在模型中的样子:

代码语言:javascript
复制
class LeaderboardTable(tables.Table):
    rank = tables.TemplateColumn('{{ record.rank }}')
    name = tables.TemplateColumn('{{ record.user__first_name }} {{ record.user__last_name }}')
    team = tables.TemplateColumn('{{ record.team }}')
    points = tables.TemplateColumn('{{ record.points }}')

下面是它在视图中的样子:

代码语言:javascript
复制
def get_leaderboard(request):
    table = LeaderboardTable(Profiles.objects.select_related().all())
    RequestConfig(request).configure(table)
    return render(request, 'leaderboard.html', {'table': table})

如果你看上面的代码,你可能会注意到name列是不正确的,因为我还没有想好如果我组合到一个queryset中的字段如何排序-如果你也能回答这个问题那就太好了。

我喜欢django-tables2处理表的创建和分页;但是,每次我点击sort/next或prev page时,它都会导致页面刷新。有没有办法抑制这种情况?另外,我不知道这是否是因为我返回了10,000条记录,但是django-tables2在排序和分页方面似乎相当慢。

我是否使用了正确的应用程序进行此操作?你们觉得我是不是该用点别的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-26 05:36:34

django-tables2 不支持在不刷新页面的情况下(此时)使用JavaScript进行排序/分页。

返回10k条记录应该不会有问题。我建议你使用像django-debug-toolbar这样的东西来看看哪些查询执行得很慢(例如,你的select_related()调用可能不起作用)。

您可以将表重写为:

代码语言:javascript
复制
class LeaderboardTable(tables.Table):
    rank = tables.Column()
    name = tables.Column(order_by=("first_name", "last_name"))
    team = tables.Column()
    points = tables.Column()

    def render_name(self, record):
        return u"%s %s" % (record.user.first_name, record.user.last_name)

检查使用render_name是否解决了性能问题。它应该比使用TemplateColumn更快,但只有当您在表的每一页中呈现大量行时,这才应该是重要的。

票数 1
EN

Stack Overflow用户

发布于 2014-05-31 00:57:24

对于要放入表中的这么多项,并且能够在不刷新整个页面的情况下对表进行排序,我建议您使用SlickGrid,这是一个接受json数据作为输入的javascript库。

只需将查询集转储到json变量中并将其传递给模板即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11182063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档