程序猿果然是需要精神高度集中才能工作的类型啊......这礼拜生病了。。。看书效率奇低。。。。
上一章节讲完了用户关注的关系
这一章节来讲另外一个大功能,评论功能
由于评论和2个模型有关系,分别是谁发了评论,以及评论了哪个文章,所以这次又要更新数据库模型了
class Comment(db.Model):
__tablename__ = "comments"
id = db.Column(db.Integer,primary_key = True)
body = db.Column(db.Text)
body_html = db.Column(db.Text)
timestamp = db.Column(db.DateTime , index = True , default = datetime.utcnow)
disabled = db.Column(db.Boolean)
author_id = db.Column(db.Integer , db.ForeignKey('users.id'))
post_id = db.Column(db.Integer , db.ForeignKey('users.id'))
@staticmethod
def on_changed_body(target,value,oldvalue,initiator):
allowed_tags = ['a', 'abbr', 'acronym', 'b', 'code', 'em', 'i','strong']
target.body_html = bleach.linkify(bleach.clean(markdown(value, output_format='html'),
tags=allowed_tags, strip=True))
db.event.listen(Comment.body, 'set', Comment.on_changed_body)
这个Comment和Post基本上一致,不过多了一个disabled属性,书上写是给管理员用的。
既然Comment里面设置了2个外键,那么User和Post里面也要设置相应的关系
class User(db.Model):
# ...
comments = db.relationship('Comment', backref='author', lazy='dynamic')
class Post(db.Model):
# ...
comments = db.relationship('Comment', backref='post', lazy='dynamic')