rob*_*123 5 python sqlalchemy flask python-2.7 flask-sqlalchemy
我有一个使用 SQL-Alchemy 的 Flask 应用程序。我有一个特定的字段,该字段设置为使用 python 方法在更新时修改它的内容。
代码如下:
def convert_markdown_to_html(context):
#pdb.set_trace()
return markdown2.markdown(context.current_parameters['content_markdown'])
Run Code Online (Sandbox Code Playgroud)
和模型代码:
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'))
Run Code Online (Sandbox Code Playgroud)
问题是,有时会在不更新 content_markdown 的情况下更新事件。
发生这种情况时,应用程序会中断,因为
context.current_parameters['content_markdown']
Run Code Online (Sandbox Code Playgroud)
不存在
目前,我正在愚蠢地解决这个问题,在可以想象更新事件的任何地方都包含以下行:
result.content_markdown = result.content_markdown + ' '
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想避免可能有数百个空格污染我的 description/content_markdown,但是我不确定如何最好地避免破坏程序。
我可以在实际的更新方法中而不是在模型类中进行从 markdown 到 html 的转换,但是这对我来说感觉非常不面向对象,因为我已经在模型代码的其他地方使用了 convert_markdown_to_html(在永远不会破坏我的应用程序,因为该字段总是更新)。
如果所需的内容不可用,是否有任何方法可以有效且干净地避免运行 onupdate 方法?
提前致谢
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |