我在表格中有这个专栏:
name = Column(String, default='ts-1')
如何设置默认值以自动增加,以便对象的名称在创建时为“ts-1”,“ts-2”,“ts-3”....
我试着写一个构造函数:
def __init__(self):
self.name = 'ts-' + str(self.id)
但它总是返回None。
感谢。
答案 0 :(得分:0)
我找到了一种使用sqlalchemy orm事件来解决这个问题的方法。结果很简单。我们的想法是在init
上编写一个事件监听器,以便在创建对象时触发它。
所以现在我可以访问实例的id值。
from sqlalchemy import event
@event.listens_for(SomeClass, 'init')
def change_name(target, args, kwargs):
session.add(target)
session.commit()
target.name = 'sheet#' + str(target.id)