class UserToRole(db.Model): """用户-角色多对多关系表""" __tablename__ = "permission_user_to_role" u_id = db.Column(db.Integer, db.ForeignKey("users.id"), primary_key=True) r_id = db.Column(db.Integer, db.ForeignKey("permission_role.id"), primary_key=True)
class PermissionToRole(db.Model): """权限-角色多对多关系表""" __tablename__ = 'permission_to_role' p_id = db.Column(db.Integer, db.ForeignKey("permission_permission.id"), primary_key=True) r_id = db.Column(db.Integer, db.ForeignKey("permission_role.id"), primary_key=True)
class ArticleToTag(db.Model): """标签与文章关系表""" __tablename__ = 'article_to_tag' article_id = db.Column(db.Integer, db.ForeignKey('article_article.id'), primary_key=True) tag_id = db.Column(db.Integer, db.ForeignKey('article_tag.id'), primary_key=True)
class Article(SearchableMixin, db.Model): """文章表""" __tablename__ = 'article_article' # __searchable__ = ['title', 'content'] # __analyzer__ = ChineseAnalyzer() id = db.Column(db.Integer, primary_key=True) uuid = db.Column(db.String(36), unique=True, nullable=False, default=lambda: str(uuid4())) title = db.Column(db.String(50)) describe = db.Column(db.Text) read_num = db.Column(db.Integer, default=0) content = db.Column(db.Text) content_html = db.Column(db.Text) create_time = db.Column(db.DateTime, index=True, default=datetime.now) image_path = db.Column(db.String(100), ) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) # 与分类建立外键关系 category_id = db.Column(db.Integer, db.ForeignKey('article_category.id')) # 建立orm查询关系,文章表与评论表的一对多关系 comments = db.relationship('Comment', backref='article', passive_deletes=True, order_by=-Comment.create_time) # 建立orm查询关系,标签表与文章表的多对多关系 tags = db.relationship('Tag', secondary=ArticleToTag.__table__) ips = db.relationship('Record', secondary=UserLikeArticle.__table__) @staticmethod def on_changed_body(target, value, oldvalue, initiator): allowed_tags = [ 'a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', 'h2', 'h3', 'p', 'img', 'video', 'div', 'iframe', 'p', 'br', 'span', 'hr', 'src', 'class' ] allowed_attrs = { '*': ['class'], 'a': ['href', 'rel'], 'img': ['src', 'alt'] } target.body_html = bleach.linkify( bleach.clean(markdown(value, output_format='html'), tags=allowed_tags, strip=True, attributes=allowed_attrs))
class UserLikeArticle(db.Model): """点赞表""" __tablename__ = 'article_user_like' ip_id = db.Column(db.Integer, db.ForeignKey('records.id'), nullable=False, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('article_article.id'), nullable=False, primary_key=True)
class Comment(db.Model): """一级评论表""" __tablename__ = 'article_comment' id = db.Column(db.Integer, primary_key=True) uuid = db.Column(db.String(36), unique=True, nullable=False, default=lambda: str(uuid4())) content = db.Column(db.Text) create_time = db.Column(db.DateTime, index=True, default=datetime.now) # 与文章表建立外键关系 article_id = db.Column( db.Integer, db.ForeignKey('article_article.id', ondelete="CASCADE")) # 与用户表建立外键关系 user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
class ServiceItem(BaseModel): __tablename__ = "serviceitem" icon = db.Column(db.TEXT, nullable=True) title = db.Column(db.TEXT, nullable=True) text = db.Column(db.TEXT, nullable=True) service_id = db.Column(db.INT, db.ForeignKey('services.id')) service = db.relationship('Service', backref='services', lazy=True)
class Menu(db.Model): """ 页面中元素菜单显示对应的权限 """ __tablename__ = 'permission_menu' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(50), nullable=False) p_id = db.Column(db.Integer, db.ForeignKey("permission_permission.id"), unique=True, nullable=False) permission = db.relationship("Permission", uselist=False) @classmethod def by_name(cls, name): return cls.query.filter_by(name=name).first()
class Reply(db.Model): id = db.Column(db.Integer, primary_key=True) thread_id = db.Column(db.Integer, db.ForeignKey('thread.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) message = db.Column(db.String(200)) date_created = db.Column(db.DateTime(), default=datetime.utcnow)
from create_app import db from tweets.models import Tweets followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followee_id', db.Integer, db.ForeignKey('user.id'))) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(255)) image = db.Column(db.String(255)) joined_date = db.Column(db.String(255)) tweets = db.relationship("Tweets", backref='user', lazy='dynamic') following = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), secondaryjoin=(followers.c.followee_id == id),backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') my_followers = db.relationship('User', secondary=followers, primaryjoin=(followers.c.followee_id == id), secondaryjoin=(followers.c.follower_id == id), backref=db.backref('followees', lazy='dynamic'), lazy='dynamic')
from datetime import datetime from flask_security import RoleMixin, UserMixin from create_app import db roles_users = db.Table( 'roles_user', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) class Role(db.Model, RoleMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(250)) class User(db.Model, UserMixin): """The user model database""" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) username = db.Column(db.String(255), unique=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime(), default=datetime.utcnow) roles = db.relationship("Role", secondary=roles_users, backref=db.backref('users', lazy='dynamic')) replies = db.relationship("Reply", backref="user", lazy="dynamic")
class Tweets(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) tweet = db.Column(db.String(140)) live = db.Column(db.Boolean) date_created = db.Column(db.DateTime)
class Order(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) product_id = db.Column(db.Integer, db.ForeignKey('product.id')) quantity = db.Column(db.Integer) total_order = db.Column(Float)