"""文章扩展模型""" from datetime import datetime from app import db class ArticleAuthor(db.Model): """文章作者表""" __tablename__ = 'article_authors' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) avatar = db.Column(db.String(500)) # 作者头像URL bio = db.Column(db.String(200)) # 作者简介 website = db.Column(db.String(500)) # 作者网站/主页 created_at = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f'' class Reference(db.Model): """参考来源表""" __tablename__ = 'references' id = db.Column(db.Integer, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('articles.id'), nullable=False) title = db.Column(db.String(200), nullable=False) # 来源标题 url = db.Column(db.String(500)) # 来源链接 description = db.Column(db.String(300)) # 来源描述 article = db.relationship('Article', backref=db.backref('references', lazy='dynamic')) created_at = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f'' class Attachment(db.Model): """附件表""" __tablename__ = 'attachments' id = db.Column(db.Integer, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('articles.id'), nullable=False) filename = db.Column(db.String(200), nullable=False) # 文件名 filepath = db.Column(db.String(500), nullable=False) # 文件路径 filesize = db.Column(db.Integer) # 文件大小(字节) filetype = db.Column(db.String(50)) # 文件类型 description = db.Column(db.String(200)) # 文件描述 article = db.relationship('Article', backref=db.backref('attachments', lazy='dynamic')) upload_time = db.Column(db.DateTime, default=datetime.utcnow) def __repr__(self): return f'' def get_filesize_display(self): """显示友好的文件大小""" size = self.filesize or 0 if size < 1024: return f'{size} B' elif size < 1024 * 1024: return f'{size / 1024:.1f} KB' else: return f'{size / 1024 / 1024:.1f} MB' class UploadedImage(db.Model): """上传图片表""" __tablename__ = 'uploaded_images' id = db.Column(db.Integer, primary_key=True) filename = db.Column(db.String(200), nullable=False) filepath = db.Column(db.String(500), nullable=False) article_id = db.Column(db.Integer, db.ForeignKey('articles.id')) # 关联文章(可选) uploader = db.Column(db.String(50)) # 上传者 upload_time = db.Column(db.DateTime, default=datetime.utcnow) article = db.relationship('Article', backref=db.backref('uploaded_images', lazy='dynamic')) def __repr__(self): return f'' def get_url(self): """获取图片访问URL""" return f'/uploads/{self.filename}'