class Category(db.Model): """类型模型, 存储类型名称, 建立关系属性: 话题, 文章""" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) topics = db.relationship('Topic', back_populates='category') posts = db.relationship('Post', back_populates='category')
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(60)) body = db.Column(db.Text) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) can_comment = db.Column(db.Boolean, default=True) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', back_populates='posts') comments = db.relationship('Comment', back_populates='post', cascade='all, delete-orphan')
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(30)) body = db.Column(db.Text) from_admin = db.Column(db.Boolean, default=False) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) replied_id = db.Column(db.Integer, db.ForeignKey('comment.id')) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) post = db.relationship('Post', back_populates='comments') replies = db.relationship('Comment', back_populates='replied', cascade='all, delete-orphan') replied = db.relationship('Comment', back_populates='replies', remote_side=[id])
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) # 帖子ID title = db.Column(db.String(60)) # 帖子标题 body = db.Column(db.Text) # 帖子正文 timestamp = db.Column(db.DateTime, default=datetime.utcnow) # 发帖时间 can_comment = db.Column(db.Boolean, default=True) # 帖子是否可评论 category_id = db.Column(db.Integer, db.ForeignKey('category.id')) # 帖子的类别,外键 category = db.relationship('Category', back_populates='posts') # 帖子所属的类别集合(单数) comments = db.relationship('Comment', back_populates='post', cascade='all,delete-orphan') # 帖子所属的评论集合(复数)
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(60)) body = db.Column(db.Text) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) clicks = db.Column(db.INT, default=0) can_comment = db.Column(db.Boolean, default=True) category_id = db.Column(db.Integer, db.ForeignKey("category.id")) category = db.relationship("Category", back_populates="posts") comments = db.relationship("Comment", back_populates="post", cascade="all, delete-orphan")
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(30)) email = db.Column(db.String(254)) site = db.Column(db.String(255)) body = db.Column(db.Text) from_admin = db.Column(db.Boolean, default=False) reviewed = db.Column(db.Boolean, default=False) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) post_id = db.Column(db.Integer, db.ForeignKey("post.id")) post = db.relationship("Post", back_populates="comments") replied_id = db.Column(db.Integer, db.ForeignKey("comment.id")) replied = db.relationship("Comment", back_populates="replies", remote_side=[id]) replies = db.relationship("Comment", back_populates="replied", cascade="all")
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(60)) body = db.Column(db.Text) private = db.Column(db.Boolean, default=False) can_comment = db.Column(db.Boolean, default=True) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) # category_id = db.Column(db.Integer, db.ForeignKey('category.id')) # category = db.relationship('Category', back_populates='posts') categories = db.relationship( "Category", secondary=category_post_table, back_populates="posts" ) comments = db.relationship( "Comment", back_populates="post", cascade="all, delete-orphan" )
class Post(db.Model): __tablename__ = 'post' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) body = db.Column(db.Text) html = db.Column(db.Text) timestamp = db.Column(db.DateTime, default=datetime.timestamp(datetime.now()), index=True) can_comment = db.Column(db.Boolean, default=True) view = db.Column(db.Integer, default=0) like = db.Column(db.Integer, default=0) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', back_populates='posts') comments = db.relationship('Comment', back_populates='post', cascade='all,delete-orphan')
class Post(db.Model): """文章模型, 存储文章的标题, 副标题, 内容, 创建时间和修改时间, 是否可评论, 及其类型和话题, 建立关系属性: 类型, 话题, 评论""" id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(60)) subtitle = db.Column(db.String(255)) theme = db.Column(db.String(60)) body = db.Column(db.Text) create_time = db.Column(db.DateTime, default=datetime.utcnow, index=True) update_time = db.Column(db.DateTime, default=datetime.utcnow) can_comment = db.Column(db.Boolean, default=True) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) topic_id = db.Column(db.Integer, db.ForeignKey('topic.id')) category = db.relationship('Category', back_populates='posts') topic = db.relationship('Topic', back_populates='posts') comments = db.relationship('Comment', back_populates='post', cascade='all, delete-orphan')
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) # 评论ID author = db.Column(db.String(30)) # 评论作者 email = db.Column(db.String(254)) # 评论作者邮箱 site = db.Column(db.String(255)) # 评论作者网址 body = db.Column(db.Text) # 评论内容 from_admin = db.Column(db.Boolean, default=False) # 评论是否来自于管理员 reviewed = db.Column(db.Boolean, default=False) # 判断评论是否通过审查 timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) # 评论发出时间 post_id = db.Column(db.Integer, db.ForeignKey('post.id')) # 评论所属的帖子ID,外键 post = db.relationship('Post', back_populates='comments') # 评论所属的帖子集合(单数) replied_id = db.Column(db.Integer, db.ForeignKey('comment.id')) # 所回复的那个评论ID replied = db.relationship('Comment', back_populates='replies', remote_side=[id]) # 被回复评论的集合(单数) replies = db.relationship('Comment', back_populates='replied', cascade='all') # 回复评论的评论集合(复数)
class Category(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) posts = db.relationship("Post", back_populates="category") def delete(self): default_category = Category.query.get(1) posts = self.posts[:] for post in posts: post.category = default_category db.session.delete(self) db.session.commit()
class Topic(db.Model): """话题模型, 存储话题名称, 描述, 及其类型, 建立关系属性: 类型, 文章""" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), unique=True) theme = db.Column(db.String(20), unique=True) description = db.Column(db.String(255), unique=True) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', back_populates='topics') posts = db.relationship('Post', back_populates='topic') def delete(self): """删除话题以后,其下的文章将会成为第一个话题下的文章""" first_topic = Topic.query.get(1) posts = self.posts[:] for post in posts: post.topic = first_topic db.session.delete(self) db.session.commit()
class Comment(db.Model): """评论模型, 存储作者, 邮箱, 是否来自管理员, 是否审查过, 创建时间, 及其文章, 回复, 建立关系属性: 文章, 回复(邻接列表关系)""" id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(30)) email = db.Column(db.String(254)) #site = db.Column(db.String(255)) body = db.Column(db.Text) from_admin = db.Column(db.Boolean, default=False) reviewed = db.Column(db.Boolean, default=False) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) replied_id = db.Column(db.Integer, db.ForeignKey('comment.id')) post = db.relationship('Post', back_populates='comments') replied = db.relationship('Comment', back_populates='replies', remote_side=[id]) replies = db.relationship('Comment', back_populates='replied', cascade='all, delete-orphan')
class Comment(db.Model): """存储评论的模型""" id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(30)) email = db.Column(db.String(254)) site = db.Column(db.String(255)) # 站点 body = db.Column(db.Text) from_admin = db.Column(db.Boolean, default=False) # 用来判断是否是管理员的评论 reviewed = db.Column(db.Boolean, default=False) # 用来判断是否通过审核 timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) post = db.relationship('Post', back_populates='comments') # 在同一模型内建立一对多关系将评论与回复内容联系起来 replied_id = db.Column(db.Integer, db.ForeignKey('comment.id')) # 设置一个外键指向本身 replies = db.relationship('Comment', back_populates='replied', cascade='all, delete-orphan') replied = db.relationship('Comment', back_populates='replies', remote_side=[id])
class Category(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) # posts = db.relationship('Post', back_populates='category') posts = db.relationship( "Post", secondary=category_post_table, back_populates="categories" ) def delete(self): default_category = Category.query.get(1) for post in self.posts: post.category = default_category db.session.delete(self) db.session.commit()
class Comment(db.Model): __tablename__ = 'comment' id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(100)) email = db.Column(db.String(254)) body = db.Column(db.Text) timestamp = db.Column(db.DateTime, default=datetime.timestamp(datetime.now()), index=True) show = db.Column(db.Boolean, default=True) to = db.Column(db.String(100)) like = db.Column(db.Integer) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) post = db.relationship('Post', back_populates='comments') replies = db.relationship('Comment', back_populates='replied', cascade='all,delete-orphan') #全部子评论 replied_id = db.Column(db.Integer, db.ForeignKey('comment.id')) replied = db.relationship('Comment', back_populates='replies', remote_side=[id])
class Category(db.Model): """存储文章分类的模型""" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) # 分类名称不允许重复,所以unique(唯一性)设置为True posts = db.relationship('Post', back_populates='category') def delete(self): default_category = Category.query.get(1) posts = self.posts[:] for post in posts: post.category = default_category db.session.delete(self) db.session.commit()
class Category(db.Model): __tablename__ = "category" __table_args__ = {'extend_existing': True} id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100)) posts = db.relationship("Post", back_populates="category", cascade='all,delete-orphan') def delete(self): default_category = Category.query.get(1) posts = self.posts[:] for post in posts: post.category = default_category db.session.delete(self) db.session.commit()
class Category(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) posts = db.relationship('Post', back_populates='category') def delete(self): # 如果分类被删除则该分类下的文章转移到Default分类下 """ :return: """ default_category = Category.query.get(1) posts = self.posts[:] for post in posts: post.category = default_category db.session.delete(self) db.session.commit()
class Category(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30), unique=True) posts = db.relationship('Post', back_populates='category')