2015-12-11 43 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 
    )