Flask-SQLAlchemy:用户角色模型和关系
Posted
技术标签:
【中文标题】Flask-SQLAlchemy:用户角色模型和关系【英文标题】:Flask-SQLAlchemy: User role Models and relationship 【发布时间】:2022-01-12 10:32:18 【问题描述】:我正在尝试创建 Flask-SqlAlchemy 数据库模型,并且需要将用户链接到单个角色。示例角色:“用户”、“管理员”、“版主”。
当然我可以使用一个简单的关系,它只是向用户添加一个 user_role_id 列,但我也想跟踪最后一次修改。
class User:
id = db.Column(db.Integer, primary_key=True)
class UserRole:
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False)
class UserRoleLink(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), primary_key=True)
user_role_id = db.Column(db.Integer, db.ForeignKey("user_role.id"), primary_key=True)
last_modified = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
如何使用所需的关系完成此模型?另外我想确保一个用户只能拥有一个角色,但角色可以根据需要经常使用。
提前谢谢你!
【问题讨论】:
【参考方案1】:我认为它应该适合你:
class User:
id = db.Column(db.Integer, primary_key=True)
class UserRole:
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255), nullable=False, unique=True)
role_link = db.relationship('UserRoleLink', cascade='all, delete-orphan', uselist=False)
class UserRoleLink(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), primary_key=True)
user_role_id = db.Column(db.Integer, db.ForeignKey("user_role.id"), primary_key=True)
last_modified = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
【讨论】:
以上是关于Flask-SQLAlchemy:用户角色模型和关系的主要内容,如果未能解决你的问题,请参考以下文章
如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy)
Flask-SqlAlchemy、Bcrypt、Postgres 的编码问题
Flask 学习-13.Flask-SQLAlchemy 新建模型和字段