0

我创建了一个 OnDemandGrid,但注意到列排序不适用于任何列。箭头在那里,屏幕刷新,但它不会按升序或降序对列进行排序。我什至尝试为每一列指定,但它仍然不起作用。有人有/有同样的问题吗?

更新:6.16.15 - 尝试 sortParam 建议后: 下面的评论解释。它似乎在做正确的事情......但仍然无法排序。

在此处输入图像描述

更新 6.16.15 - 下午 4:00 显然任何类型的过滤或排序都不适用于 Django - 试图确定 dojo 可以与 Django Rest 通信的设置过滤方式,反之亦然 - 到目前为止还没有找到在任一侧设置都有效。不仅列排序不起作用 - 创建搜索字段不起作用,创建排序按钮也不起作用。

在此处输入图像描述

这是在将 DJANGO settings.py 中的 ORDERING_PARAM 更改为“排序”之后...对于所有密集的目的,这看起来应该可以工作。

4

1 回答 1

1

快速搜索Django Rest Framework 文档会发现,它默认需要一个ordering查询参数来指示应该对哪个字段进行排序。store(由dstore/Request继承Rest)允许您通过 指示发送排序信息的查询参数名称sortParam

此外,似乎 DRF 的 OrderingFilter 指示不带前缀的升序排序和带-. dstore/Request默认为期望+-作为前缀,但这些可以通过ascendingPrefix和覆盖descendingPrefix

因此,在您的情况下,您需要包含sortParam: 'ordering', ascendingPrefix: ''在创建Rest商店实例时传递的属性中。

一般来说,当您遇到像这样的网格和后端似乎无法维持生计的与商店相关的问题时,这就是您必须遵循的过程 - 找出服务器的期望,找出什么客户端商店实现,看看它是否可以调整或需要定制。

更新 6.17.15 - 更改服务器端设置以匹配 dojo/dgrid 参数 -

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
 #   'PAGE_SIZE': 25,
    'ORDERING_PARAM': 'sort'
于 2015-06-16T12:36:45.127 回答