所以我尝试建立一个像前提一样保持价值的系统。
我尝试让模型用户像这样。
#model.py
class User(BaseModel):
__tablename__ = "users"
username = Column(String, primary_key=True, index=True)
password = Column(String)
permission = Column(Enum(Permission))
我迁移了白酒(autogen)。
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('users',
sa.Column('username', sa.String(), nullable=False),
sa.Column('password', sa.String(), nullable=True),
sa.Column('permission', sa.Enum('Admin', 'Viewer', name='permission'), nullable=True),
我的枚举
from enum import Enum, IntEnum
class Permission(IntEnum):
Admin = 0
Edit = 1
Viewer = 2
所以我在 postgres 中保存的地方它在这段代码中保存到管理员
#service.py
def create_user_with_admin_permission(db: SessionLocal, username: str, password: str):
permission_value = Permission.Admin
#at up this line i try to use Permission.Admin.value but not work
user = models.User(username=username, password=password, permission=permission_value)
db.add(user)
db.commit()
db.refresh(user)
return user
你能帮我吗T_T 或者我不确定我是否像此图像一样在字符串上保存值是好方法还是坏方法。 我知道用 int 记录更好。
有东西挡路
好的,现在我通过更改线路来修复
permission = Column(Enum(Permission))
到
permission = Column(Integer)