2017-05-26 82 views
0

如何在模型定义中计算字段?是否有可能在生成的SQL查询中执行计算?以下fruit_difference将是我想要实现的peewee模型中的成员。如何在peewee中计算字段?

SELECT 
    apple_count, 
    orange_count, 
    (apple_count - orange_count) fruit_difference 
FROM fruit_vendors 

回答

0

我觉得你需要的是一个属性。如果你使用Python内置的属性,它将在Python中进行评估。如果你想在数据库级别上执行它,我想你应该使用Hybrid Property

这是从文档一个很好的例子:

class Interval(Model): 
    start = IntegerField() 
    end = IntegerField() 

    @hybrid_property 
    def length(self): 
     return self.end - self.start 

    @hybrid_property 
    def radius(self): 
     return abs(self.length)/2 

    @radius.expression 
    def radius(cls): 
     return fn.ABS(cls.length)/2 

什么是整齐的是,无论是半径实现参考 长度混合属性!当通过Interval实例访问时,半径计算将在Python中执行。当通过间隔类调用 时,我们将获得适当的SQL。