0

我有一个 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 的模型中。我确定以上内容并不完全正确,但这是我开始的地方。

您如何提供仅在创建时初始化一次的默认值?

4

1 回答 1

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)
于 2013-03-05T17:04:34.507 回答