hybrid_property 表达式中的 if 语句

if statement in a hybrid_property expression

我有一个 hybrid_property 执行一些条件和 returns 响应。我希望能够针对该字段进行查询,因此我创建了一个 expression。但是,我不确定如何为这种用例编写条件。

如何编写一个表达式,根据条件的结果将两个字段之一与另一个字段相乘?

@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

你可以使用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
    )