SQLAlchemy onupdate context.current_parameters在内容未更新时中断流程

时间:2015-05-11 09:10:30

标签: python python-2.7 flask sqlalchemy flask-sqlalchemy

我有一个使用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方法?

提前致谢

0 个答案:

没有答案