Ejemplo n.º 1
0
class Category(db.Model):
    """
        分类:分类的名称不允许重复,因此name值将unique参数设为True
        举例:剧情、喜剧、短片...同一个电影可以有多个分类
    """
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), unique=True)
Ejemplo n.º 2
0
class Comment(db.Model):
    """
        评论实体:评论id、评论内容、评论类型、添加时间、喜欢数、不喜欢数
    """
    id = db.Column(db.Integer, primary_key=True)  # 必须加主键
    content = db.Column(db.String(500))  # 这里与影评的不同是限制了字数为500,短评可不能像长评那么长
    comment_type = db.Column(db.Integer, default=1)  # 默认为1,即影评;2为...暂定
    # add_time = db.Column(db.DateTime, default=datetime.utcnow, index=True)  # 添加时间(为什么要加index)
    add_time = db.Column(db.DateTime,
                         default=datetime.utcnow)  # 添加时间(为什么要加index)
    fav_nums = db.Column(db.Integer, default=0)
    dislike_nums = db.Column(db.Integer, default=0)
    # reviewd字段是为了防止垃圾评论和不当评论,当用户发表评论后,评论默认显示在博客中,管理员有权限将其撤回,则该字段为False
    checked = db.Column(db.Boolean, default=True)
    review_id = db.Column(db.Integer, db.ForeignKey('review.id'))
    review = db.relationship('Review', 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')
    """
Ejemplo n.º 3
0
class Admin(db.Model, UserMixin):
    """
        管理员模型
    """
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20))
    password_hash = db.Column(db.String(128))
    # blog_title = db.Column(db.String(60))
    # blog_sub_title = db.Column(db.String(100))
    name = db.Column(db.String(30))
    about = db.Column(db.Text)

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Ejemplo n.º 4
0
class Movie(db.Model):
    """
        影片实体:影片名、影片类型、封面图、剧情、发行日期、影片、片长、影片豆瓣评分
        注:影片类型好像需要建立新的表Category(分类)
    """
    id = db.Column(db.Integer, primary_key=True)  # ID
    name = db.Column(db.String(50))  # 影片名
    type = db.Column(db.String(30))  # 影片类型
    image = db.Column(db.String(64), default='default.jpg')  # 封面图
    desc = db.Column(db.Text)  # 剧情
    release_date = db.Column(db.Date)  # 发行日期
    mins = db.Column(db.SmallInteger)  # 片长(该字段没用过,试一试...)
    score = db.Column(db.Float)  # 影片豆瓣评分
Ejemplo n.º 5
0
class Review(db.Model):
    """
        影评实体:影评id、影评标题、影评内容、对应类型、喜欢数、不喜欢数、收藏数、举报数、转载链接
        注:
    """
    id = db.Column(db.Integer, primary_key=True)  # ID
    title = db.Column(db.String(64), unique=True)  # 影评标题
    content = db.Column(db.Text)  # 影评内容(字段待定,)
    # 对应类型:1表示对应电影,2表示对应话题,默认为1(以后可能会有更多的类型)
    review_type = db.Column(db.Integer, default=1)
    # 最后修改时间(但是关于用户修改应该要有日志系统)
    modify_time = db.Column(db.DateTime, default=datetime.utcnow)
    fav_nums = db.Column(db.Integer, default=0)  # 喜欢数
    dislike_nums = db.Column(db.Integer, default=0)  # 不喜欢数
    collect_nums = db.Column(db.Integer, default=0)  # 收藏数
    tipoff_nums = db.Column(db.Integer, default=0)  # 被举报数
    # 转载链接(至于为什么用TEXT字段,网上也是众说纷纭,暂且用TEXT吧,虽然资源占用较多
    link = db.Column(db.TEXT)
    # 级联操作
    comments = db.relationship('Comment',
                               back_populates='review',
                               cascade='all')
    """
Ejemplo n.º 6
0
class User(db.Model, UserMixin):
    """
    普通用户实体:姓名、用户名(username)/昵称(nickname)、密码、手机号、邮箱、性别、生日、地址、个性签名(比如知乎的一句话介绍)、
               个人介绍、头像、用户权限(该字段可以不考虑,管理员应该与普通用户独立)
    """
    # 创建数据库模型
    id = db.Column(db.Integer, primary_key=True)  # ID
    name = db.Column(db.String(20))  # 姓名
    username = db.Column(db.String(20))  # 用户名
    password_hash = db.Column(db.String(128))  # 密码散列值
    phone = db.Column(db.String(13))  # 手机号
    email = db.Column(db.String(30))  # email
    # email = db.Column(db.String, nullable=True, unique=True)

    gender = db.Column(db.Integer, default=None)  # 性别(默认为空)
    birthday = db.Column(db.Date)  # 出生日期
    # address = None                                  # 地址(暂时不用)
    signature = db.Column(db.String(50))  # 个性签名(比如知乎的一句话介绍)
    introduction = db.Column(db.Text)  # 个人介绍
    # 用户头像,存储路径(表单用FileField字段,实现参考https://blog.csdn.net/liuredflash/article/details/79646678)
    photo = db.Column(db.String(64), default='default_icon.jpg')

    # privilege = None                      # 用户权限(该字段暂时先不考虑,管理员与普通用户应该独立)

    def set_password(self, password):
        """用来设置密码的方法,接受密码作为参数"""
        self.password_hash = generate_password_hash(password)  # 将生成的密码保持到对应字段

    def validate_password(self, password):
        """用于验证密码的方法,接受密码作为参数"""
        return check_password_hash(self.password_hash, password)  # 返回布尔值
Ejemplo n.º 7
0
class Topic(db.Model):
    id = db.Column(db.Integer, primary_key=True)