【发布时间】:2021-12-22 12:18:21
【问题描述】:
好的,我需要指导。
我有一个角色数据库,其中包含管理员、员工、经理、用户等值
还有一个带有 role_id FK 的用户表。
我正在使用 Flask 和 Sqlalchemy。
我想实现一个场景,只有一个超级管理员,而其他用户可以分配其他角色。这意味着如果超级管理员角色为 2,在用户表上,role_id 2 只能有一个条目。
我需要在 sqlalchemy 中实现这一点。
用代码更新
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"]="sqlite:////tmp/stack.db"
db = SQLAlchemy(app)
class Role(db.Model):
__tablename__ = "roles"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True)
def __repr__(self):
return self.role
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
...
# what to add to role_id to make it have only one superadmin role id in this table
role_id = db.Column(db.Integer, db.ForeignKey('users.id', onupdate='CASCADE'))
role = db.relationship('User')
如果我已经进入角色表
| id | name |
|-----|------------|
| 1 | superadmin |
| 2 | admin |
| 3 | staff |
我希望用户表中只有一个超级管理员。
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: python flask sqlalchemy flask-sqlalchemy