【问题标题】:Flask-SQLAlchemy: User role Models and relationshipFlask-SQLAlchemy:用户角色模型和关系
【发布时间】: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)

如何使用所需的关系完成此模型?另外我想确保一个用户只能拥有一个角色,但角色可以根据需要经常使用。

提前谢谢你!

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      相关资源
      最近更新 更多