2016-05-23 15 views
8

ORM olarak peewee kullanarak ve bunun gibi iki sınıfları ediyorum:Birliği

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

class B(Model): 
    title = CharField() 
    body = TextField() 

Kimin title/name başlangıç ​​bazılarıyla A ve B tüm girişleri almak istiyorum 'abc' gibi karakterler. Belgelere göre, | operatörü yardımcı olmalı, ancak sonuçta ortaya çıkan Expression'u bile gerçekleştiremiyorum. Açıkçası, sahnelerin arkasında bir UNION ve AS ifadesine sahip olmak istiyorum. Bunu peewee aracılığıyla nasıl alabilirim?

cevap

4

Sen

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() 

veya

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() 

size docs

uyarınca AS işlevselliği alır .alias() yöntemi gibi bir şeyle istediğiniz sonucu elde etmek mümkün olmalıdır
İlgili konular