我有一个使用SQL-Alchemy的Flask应用程序。 我有一个特定的字段设置为使用python方法修改它的内容onupdate。
以下代码:
def convert_markdown_to_html(context):
#pdb.set_trace()
return markdown2.markdown(context.current_parameters['content_markdown'])
模型代码:
class Event(db.Model):
__tablename__ = "event"
id = db.Column(db.Integer, primary_key=True)
event_name = db.Column(db.String, nullable=False)
event_details = db.Column(db.String, nullable=False, onupdate=convert_markdown_to_html) # will store html content
content_markdown = db.Column(db.String, nullable=True) # the markdown of event_details
event_date = db.Column(db.Date, nullable=False)
tickets_available = db.Column(db.Integer, nullable=False)
tickets_left = db.Column(db.Integer, nullable=False)
ticket_price = db.Column(db.Integer, nullable=True)
ticket_price_member = db.Column(db.Integer, nullable=True)
is_price = db.Column(db.Boolean())
attendees = db.relationship('Event_records', backref=db.backref('attendees'))
问题是,有时会更新事件而不更新content_markdown。
当发生这种情况时,应用程序会中断,因为
context.current_parameters['content_markdown']
不存在
目前,通过在可以想象更新事件的任何地方加入以下行,我对此非常愚蠢:
result.content_markdown = result.content_markdown + ' '
理想情况下,我希望避免使用可能数百个空格来污染我的description / content_markdown但是我不确定如何最好地避免破坏程序。
我可以在实际更新方法中执行从markdown到html的转换,而不是在模型类中,但是这对我来说感觉非常不合适,因为我已经在模型代码中的其他地方使用convert_markdown_to_html(在那种情况下会永远不要破坏我的应用程序,因为该字段总是更新。)
如果所需内容不可用,有没有办法有效且干净地避免运行onupdate方法?
提前致谢