如何从 CTE 进行 peewee ORM return 自定义字段转换?

How to make peewee ORM return custom fields conversions from CTE?

我正在尝试使用 Peewee ORM 的递归 CTE,returns 字段类型与非递归查询相同。

根据 Peewee 文档,您使用 select_from 方法,使用来自先前查询的列,如下所示:

query = (cte
         .select_from(cte.c.name, cte.c.level, cte.c.path)
         .order_by(cte.c.path))

我的查询基本有效。但是,我的 table 使用了几个自定义字段类型。使用常规查询时,这些字段由字段转换为 python_value 方法中定义的对象。但是当使用 CTE 查询时,这些值作为原始数据库类型出现,而不是通过自定义字段方法转换。

有没有办法告诉查询使用字段转换?

我试过 .select_from(cte.c.myfield.convert(MyEnum), ...),但没用。

select_from() 方法 returns 你是一个“简单的”Select 查询,对转换值了解不多。这应该有效:

from peewee import ModelSelect

class Reg(Model):
    value = TextField()

Reg.create(value='1')
Reg.create(value='22')

cte = Reg.select(Reg.value).cte('regs', columns=('val',))
query = ModelSelect(Reg, (cte.c.val.converter(int),))
query = query.from_(cte).with_cte(cte)
for row in query:
    print(type(row.val), row.val)

# <class 'int'> 1
# <class 'int'> 22