如何指定一列的默认值应依赖于另一列的值?
假设,我需要一个 slug
列,默认为 id
+title
,采用以下模型:
class Page(Base):
id = Column(Integer, primary_key=True)
title = Column(String, nullable=False)
slug = Column(String, unique=True, nullable=False)
我尝试使用@validates
:
class Page(Base):
# ...
@validates('slug')
def validate(self, key, slug):
return slug or self.title # default from another column
,但当模型构建如下时它不会触发:
Page(title='a b c')
最佳答案
使用events :
@event.listens_for(Page, 'before_insert')
def page_defaults(mapper, configuration, target):
# `slug` defaults to `name`
if not target.slug:
target.slug = target.name
关于python - 基于另一个属性的列默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161938/