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

时间:2015-06-15 20:18:54

标签: dgrid dstore

我创建了一个OnDemandGrid,但注意到列排序并不适用于任何列。箭头在那里,屏幕刷新,但它不会按asc或desc顺序对列进行排序。我甚至尝试为每一栏指定,但它仍然无法正常工作。有没有/有同样问题的人?

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

enter image description here

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

enter image description here

这是在更改为DJANGO settings.py中的ORDERING_PARAM到' SORT' ...出于所有强化目的,这看起来应该有效。

1 个答案:

答案 0 :(得分:1)

快速搜索Django Rest Framework documentation表明,默认情况下,期望ordering查询参数指示应对哪个字段进行排序。 dstore/Request商店(由Rest继承)允许您通过sortParam指示发送排序信息的查询参数名称。

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

因此,在您的情况下,您需要在创建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'