我有一个sqlalchemy mixin,我想为mixin的专栏设置一个默认值,但我还没有找到直接的答案,并采用了那种科学方法的反复试验品种。这是我的第一次尝试,我还没有机会使用它:
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))
不可否认,我还没有充分理解super的使用,但是我需要一种方法来为mixin提供一个默认值,而不是将它放在接收mixin的模型中。我确定上述内容并不完全正确,但我是在哪里开始的。
如何提供仅在创建时初始化一次的默认值?
答案 0 :(得分:0)
根据Mixing in Columns和Column 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)