Python django-tables2刷新排序和页面更改

Python django-tables2刷新排序和页面更改,python,django,django-tables2,Python,Django,Django Tables2,我一直在尝试使用django-tables2创建一个排行榜表格,允许用户按所有列进行排序、搜索和筛选。我没有做任何特别的事情,只是遵循django-tables2中的文档 以下是模型中的外观: class LeaderboardTable(tables.Table): rank = tables.TemplateColumn('{{ record.rank }}') name = tables.TemplateColumn('{{ record.user__first_name

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

以下是模型中的外观:

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 }}')
以下是它在视图中的外观:

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页面时,都会导致页面刷新。有没有办法抑制这种情况?另外,我不知道这是否是因为我返回了10000条记录,但django-tables2在排序和分页方面似乎非常慢


我是否为此使用了正确的应用程序?你们认为我应该使用其他东西吗?

django-tables2不支持使用JavaScript进行排序/分页而不刷新页面(此时)

返回10k记录不应该有问题。我建议您使用类似的方法来查看哪些查询执行缓慢(例如,可能您的
select\u related()
调用不起作用)

您可以将表重写为:

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\u name
是否解决了性能问题。它应该比使用
TemplateColumn
更快,但只有在表的每个页面中呈现大量行时,这才有意义。

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

返回10k记录不应该有问题。我建议您使用类似的方法来查看哪些查询执行缓慢(例如,可能您的
select\u related()
调用不起作用)

您可以将表重写为:

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\u name
是否解决了性能问题。它应该比使用
TemplateColumn
更快,但只有在表的每一页中呈现大量行时,这一点才有意义。

对于要放入表中的如此多的项,并且能够在不刷新整页的情况下对表进行排序,我建议您使用一个javascript库,它将json数据作为输入


只需将查询集转储到json var中,并将其传递给模板。

对于要放入表中的项目数量,并且能够在不刷新整个页面的情况下对表进行排序,我建议您使用json数据作为输入的javascript库


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

谢谢,布拉德利!棒极了,回答得很彻底。谢谢你,布拉德利!真棒,彻底的回答。