2013-03-05 73 views
0

我有一個sqlalchemy mixin,我想爲mixin的列設置默認值,但我沒有找到一個直接的答案,並採取了這種試驗和科學的錯誤方法多樣。這是我第一次嘗試,而我還沒有機會尚未使用它:超級與sqlalchemy mixins默認值

class ExampleMixin(object): 
    """Mixin for `AnExample`""" 

    def __init__(self, example_id): 
     self.example_id = HMAC("{}".format(urandom(32).encode('base_64'))).hexdigest() 
     super(ExampleMixin, self).__init__(self.example_id) 

    example_id = Column(String(255)) 

誠然,我不明白,完全使用超,但我需要一種方法來爲提供一個默認值一個mixin沒有把它放入接收mixin的模型中。我確信上述不完全正確,但是我開始的地方。

如何提供僅在創建時初始化的默認值?

回答

0

根據Mixing in ColumnsColumn Insert/Update Defaults,下面的代碼應該實現你的願望:

def _example_id_default(): 
    return HMAC("{}".format(urandom(32).encode('base_64'))).hexdigest() 

class ExampleMixin(object): 
    """Mixin for `AnExample`""" 

    example_id = Column(String(255), default=_example_id_default) 
+0

我已經試過這一點,並通過創建所有同一列每次燒我自己,但我會看這一遍又一遍。 – blueblank 2013-03-06 13:57:10