2015-12-11 72 views
2

我有一個hybrid_property,它執行一些條件並返回響應。我希望能夠查詢這個領域,所以我創建了一個expression。但是,我不確定如何爲這種用例寫一個條件。如果語句在hybrid_property表達式中

如何根據條件的結果編寫一個表達式,將兩個字段中的一個字段與另一個字段相乘?

@hybrid_property 
def func(self): 
    if self.some_column is True: 
     return self.true_column * self.amount 
    return self.false_column * self.amount 

@func.expression 
def func(cls): 
    # ??? 
    return 

回答

3

可以使用case表達

from sqlalchemy import case 

@func.expression 
def func(cls): 
    return case(
     [ 
      (cls.some_column == True, cls.true_column * cls.amount), 
     ], 
     else_=cls.false_column * cls.amount 
    )