class Article(BaseModel): __tablename__ = 'article' title = db.Column(db.String(64), nullable=False) # 标题 describe = db.Column(db.String(256), nullable=True) # 文章简述 content = db.Column(db.Text, nullable=False) create_time = db.Column(db.DateTime, default=datetime.now) art_type = db.Column(db.Integer, db.ForeignKey('article_type.id')) us = db.Column(db.Integer, db.ForeignKey('user.id'))
class PostsModel(db.Model): __tablename__ = 'posts' id = db.Column(db.String(150), primary_key=True, default=shortuuid.uuid) title = db.Column(db.String(150), nullable=False) content = db.Column(db.Text, nullable=False) create_time = db.Column(db.DateTime, default=datetime.now) # 阅读统计 read_count = db.Column(db.Integer, default=0) # 作者ID 绑定 author_id = db.Column(db.String(150), db.ForeignKey("user.id")) author = db.relationship("UserModel", backref='posts')
class UserModel(db.Model): __tablename__ = 'user' id = db.Column(db.String(150), primary_key=True, default=shortuuid.uuid) username = db.Column(db.String(64), default='新用户...') password_hash = db.Column(db.String(255), nullable=False) email = db.Column(db.String(255), unique=True, nullable=False) create_time = db.Column(db.DateTime, default=datetime.now) # 经验 points = db.Column(db.Integer, default=0) is_active = db.Column(db.Boolean, default=True) gender = db.Column(db.String(10), default='秘密') # 字数 charactors = db.Column(db.Integer, default=0) signature = db.Column(db.Text, default='这家伙很懒,什么都没有留下~') avatar = db.Column( db.String(300), default= "https://donghaocms.oss-cn-beijing.aliyuncs.com/avater/default.jpg") # 保护字段 @property def password(self): raise ArithmeticError("密码是不可读属性") # 生成hash @password.setter def password(self, password): self.password_hash = generate_password_hash(password) # 校验 def check_password(self, password): return check_password_hash(self.password_hash, password)
class User(BaseModel): # 表名 __tablename__ = 'user' # 字段 id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(255), unique=True, nullable=False) _password = db.Column(db.String(128), nullable=False) email = db.Column(db.String(255), unique=True) header_img = db.Column(db.String(255), nullable=True) # 头像 phone = db.Column(db.String(255), unique=True) is_delete = db.Column(db.Boolean, default=False) # 逻辑删除用户 #设置密码 @property def password(self): raise AttributeError("你没有有权限") @password.setter def password(self, password): self._password = generate_password_hash(password) def verify_password(self, password): # 检查密码 return check_password_hash(self.password, password)
class ArticleType(BaseModel): __tablename__ = 'article_type' type_name = db.Column(db.String(64), nullable=False) # 类型名 use = db.Column(db.Integer, db.ForeignKey('user.id'))
class TagsModel(db.Model): __tablename__ = 'tag' id = db.Column(db.Integer, primary_key=True, autoincrement=True) tagname = db.Column(db.String(150)) posts = db.relationship("PostsModel", backref='tags', secondary=post_tag)