使用peewee在具有不同名称的字段上联合

Ach*_*him 8 python sql orm peewee

我正在使用peewee作为ORM并且有两个这样的类:

class A(Model):
    name = CharField()
    body = TextField()

class B(Model):
    title = CharField()
    body = TextField()
Run Code Online (Sandbox Code Playgroud)

我想从获取的所有条目AB它的title/ name有像一些字符开头'abc'.根据文档,|操作员应该提供帮助,但我甚至无法执行结果Expression.很显然,我想有一个UNIONAS表达幕后.我怎么通过peewee得到这个?

KMR*_*KMR 4

你应该能够得到你想要的结果,比如

result = (
    A().select(A.name.alias('name_title'), A.body).where(A.name == 'abc') |
    B().select(B.title.alias('name_title'), B.body).where(B.title == 'abc')
).select().execute()
Run Code Online (Sandbox Code Playgroud)

或者

search_text = 'abc'
table_a_results = A().select(
    A.name.alias('name_title'),
    A.body
).where(A.name == search_text)
table_b_results = B().select(
    B.name.alias('name_title'),
    B.body
).where(B.title == search_text)

result = ( table_a_results | table_b_results ).select().execute()
Run Code Online (Sandbox Code Playgroud)

根据文档.alias()获取功能的方法AS