【发布时间】:2019-06-26 21:41:56
【问题描述】:
我有一个文章模型,根据它的标题会有 slug,模型是这样的:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Text
Base = declarative_base()
class Article(Base):
__tablename__ = 'article'
id = Column(Integer, primary_key=True)
title = Column(String(100), nullable=False)
content = Column(Text)
slug = Column(String(100), nullable=False,
default=lambda c: c.current_params['title'],
onupdate=lambda c: c.current_params['title'])
slug 正在获取标题的值。所以,每次文章slug 都会匹配它的标题。但是,当我在不更改标题的情况下编辑内容时,这
引发异常
(builtins.KeyError) 'title' [SQL: 'UPDATE article SET content=?, slug=?,
updated_at=? WHERE article = ?'] [parameters: [{'article_id': 1,
'content': 'blah blah blah'}]]
我猜是因为current_params 不包含title。如果,我改变
那里的lambda 并使用if,slug 将是None。那我该如何处理
这并保持 slug 值匹配它的标题?
【问题讨论】:
标签: python sqlalchemy