python - 基于另一个属性的列默认值

标签 python sqlalchemy

如何指定一列的默认值应依赖于另一列的值?

假设,我需要一个 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/

相关文章:

python - 查找与另一列 Pandas 中的唯一值关联的列中的值的交集

python - 使用 SQLAlchemy ORM 批量插入多个表

python - Flask 关系,仅同一个人的唯一列名

python - SQLAlchemy 中的多个连接路径

python - 当没有这样的命名列时,SQLite 给出找不到列的错误

python - 如何在 python 中打印嵌套列表的所有可能性?

python - Numpy Where 有两个以上的条件

python - 写入文件,子进程。调用输出不返回任何内容

python - 是否需要关闭没有引用它们的文件?

postgresql - 计算大表中的未读新闻