【问题标题】:OnDemandGrid column sorting isn't working with dstore/Rest and Django Rest FrameworkOnDemandGrid 列排序不适用于 dstore/Rest 和 Django Rest Framework
【发布时间】:2015-06-15 20:18:53
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您使用的是基于服务器的存储,这很可能是因为您的服务不理解客户端存储实现发送的排序参数...您在 0.3 上使用dojo/store 还是 0.4 和 dstore?
  • dojo 1.10 - dstore - dgrid 0.4 -server based store 是 Django Rest Framework,它从 MySQL 数据库中提取。

标签: dgrid dstore


【解决方案1】:

通过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'

【讨论】:

  • 我添加了 sortParam - 仍然无法正常工作......在萤火虫中它看起来工作正常......但仍在尝试排除故障。
  • 我在 Django Rest 文档中找到了一些东西,您可以在其中将排序首选项设置为 settings.py 中的排序,并且它可以工作(至少从萤火虫的角度来看) - 但是,它仍然不会排序。 .. 有任何想法吗??这没有任何意义,无论哪种方式都行不通。
  • 它仍然归结为客户端发送的内容与服务器接收的内容...查看请求的查询字符串 dstore/Rest 正在发送,并仔细检查文档以了解服务器实际上期望。由于您似乎在使用 Firefox,所以像 REST Easy 这样的扩展可能有助于测试。
  • 哦,我刚刚注意到您更新了原始问题。鉴于&sort(+id) 示例(将变为&ordering=id),您似乎仍未按照我的建议在商店中设置sortParamascendingPrefix
  • 我之前确实尝试过......它确实将其切换为订购。当这也不起作用时,我在服务器端将其切换为排序而不是排序……这是我最近所做的更改。最近的上图显示了ordering=id。两者都没有正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2018-10-27
  • 2016-01-23
  • 2018-03-06
  • 1970-01-01
  • 2016-08-06
  • 2016-07-21
相关资源
最近更新 更多