默认 orderby 列类型为日期时的网格排序错误。还有其他人有这个问题吗?

Grid sorting bug when default orderby column type is date. Anyone else with this problem?

我有这个动作

@auth.requires(auth.has_membership(CHECKER_ROLE) or auth.has_membership(SUPERVISOR_ROLE))
def list_tags_to_issue():
    """List tags to issue.

    :return: Dict with grid.
    """

   query = ((db.wo.is_active == True)
            & (db.wo.tags_issued == False)
            & (db.wo.pies_verified == False)
            & (db.wo.equipment_id == db.equipment.id))

    grid = SQLFORM.grid(
        query,
        create=False,
        csv=False,
        deletable=False,
        details=False,
        editable=False,
        fields=[db.wo.est_finish,
                db.equipment.name,
                db.wo.sn,
                db.wo.opts,
                db.wo.finished,  # Necessary dummy entry.
                db.wo.canceled_on,  # Necessary dummy entry.
                db.wo.canceled_by,  # Necessary dummy entry.
                db.wo.cancel_approved_by,  # Necessary dummy entry.
        ],
        orderby=db.wo.est_finish,
    )

    return dict(grid=grid)

有此看法

{{extend 'layout.html'}}

<h2>{{=T('List tags to issue')}}</h2>

{{=grid}}

{{if DEV:
=response.toolbar()
pass}}

如果我尝试更改默认 orderby 列 (est_finish) 中的排序,它不会发生。 URL 从 ...orderby=do.wo.est_finish 更改为 ...orderby=~db.wo.est_finish,但网格没有改变。 当我看到数据库统计信息时,SQL 命令也没有改变。 SQL命令总是

SELECT "wo"."est_finish", "equipment"."name", "wo"."sn", "wo"."opts", "wo"."finished", "wo"."canceled_on", "wo"."canceled_by", "wo"."cancel_approved_by", "wo"."id" 
FROM "wo", "equipment" 
WHERE (((("wo"."is_active" = 'T') AND ("wo"."tags_issued" = 'F')) AND ("wo"."pies_verified" = 'F')) AND ("wo"."equipment_id" = "equipment"."id")) 
ORDER BY "wo"."est_finish", "wo"."id" LIMIT 20 OFFSET 0;

无论 URL 从 ...orderby=do.wo.est_finish 更改为 ...orderby=~db.wo.est_finish.

这是显示此问题的 3 个不同视图之一(所有视图都有一个 orderby 和一个日期列)。所有其他的都正常工作。

如果我从网格中删除 orderby 参数或将其更改为非日期参数,一切正常,包括日期列的排序。

有什么想法吗?

谢谢,

JM

在 web2py 组中报告此问题后,已在 2.18.5 版本中修复。