【发布时间】:2017-02-06 08:19:46
【问题描述】:
我的关系有问题(...),我不明白为什么。
错误:
"InvalidRequestError: 在初始化映射器 Mapper|User|users 时,表达式 'BannedUser' 找不到名称("name 'BannedUser' is not defined")。如果这是一个类名,请考虑将此关系()添加到定义了两个依赖类之后的类。”
这是代码:
用户模型
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import relationship
from .base import Base as BaseModel
class User(BaseModel, declarative_base()):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String(16))
password = Column(String(16))
nickname = Column(String(16))
secret_question = Column(String(50))
secret_answer = Column(String(50))
role = Column(Integer)
is_banned = relationship("BannedUser", uselist=False, back_populates='users')
禁止用户模型:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from .base import Base as BaseModel
class BannedUser(BaseModel, declarative_base()):
__tablename__ = 'banned_users'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'))
user = relationship('User', back_populates='banned_users')
reason = Column(String)
time_end = Column(DateTime)
我直接尝试了类而不是类字符串,但这也不起作用。
我尝试使用“User.id”而不是“users.id”,但发生了同样的事情。
我不知道该怎么办。
非常感谢您的帮助。
【问题讨论】:
标签: python sqlalchemy foreign-keys relationship