OnDemandGrid 列排序不适用于 dstore/Rest 和 Django Rest Framework

OnDemandGrid column sorting isn't working with dstore/Rest and Django Rest Framework

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

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

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

这是在将 DJANGO settings.py 中的 ORDERING_PARAM 更改为 'SORT' 之后...对于所有密集用途,这看起来应该有效。

通过 Django Rest Framework documentation 的快速搜索显示它默认需要一个 ordering 查询参数来指示应该对哪个字段进行排序。 dstore/Request 存储(由 Rest 继承)允许您通过 sortParam.

指示发送排序信息的查询参数名称

此外,DRF 的 OrderingFilter 似乎表示没有前缀的升序排序,以及 - 的降序排序。 dstore/Request 默认期望 +- 作为前缀,但这些可以通过 ascendingPrefixdescendingPrefix.

覆盖

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

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

更新 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'