2017-05-26 79 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。