如何通过 Odoo 中的布尔字段进行排序?

How to order by a boolean field in Odoo?

我无法理解 Odoo 的行为 API。这让我发疯。

如您所知,如果您想按模型的某些字段对模型进行排序,则必须修改模型的属性 _order。它工作正常。

现在,假设您想按某些字段对特定视图进行排序而不改变模型的正常顺序(这意味着:按某些字段对特定视图进行排序,而同一模型的其余视图按其他字段进行排序).

在这种情况下,您必须使用 XML 代码,在 kanbantree 标记中指定属性 default_order,具体取决于您正在修改的视图.

我过去曾成功地使用过它。所以我想再次将其应用于看板视图(这次我想通过 boolean 字段、char 和另一个 char).

现在让我感到惊讶的是:按 布尔值 字段排序会反转下一个字段的顺序,如果它的值为 False.

例如 我们有 6 条记录,我们想按布尔值、姓名和姓氏排序;在 default_order:

的看板视图中

因此在示例中,在看板视图中我们将看到它们以这种方式排序:

  1. 是的,简,Doe
  2. 没错,John,Doe
  3. 是的,约翰,Xoe
  4. 假的,约翰,死
  5. 假,简,谢
  6. 假,简,死

如您所见,如果布尔值 True,则记录按 booleanname姓氏,这就是我想要的。但如果它的值为 False,则记录按 booleanname DESCsurname DESC[=72] 排序=].

这是怎么回事?你有同样的经历吗?我如何按 booleanchar、然后另一个 char??

我用来进行奇数排序的一种方法是使用上下文来控制它。在看板视图的 window 操作中,添加一个上下文,如

<field name="context">{'do_my_special_sort': True}</field>

然后在模型上覆盖搜索方法,在上下文中检查此标志并设置排序顺序。