我有两个表模型,一个是父模型,另一个是子模型
这是我的父母模特
class users_table(Base):
__tablename__ = 'users_table'
userid = Column(String(50), unique= True, primary_key= True, nullable= False)
username = Column(String(500), unique= True, nullable= False)
password = Column(String(500), nullable= False)
email = Column(String(500), nullable= False, unique= True)
role = Column(String(10), default= 'user', nullable= False)
created_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)
updated_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)
children = relationship("user_status_table")
这是我的孩子模型
class user_status_table(Base):
__tablename__ = 'user_status_table'
id = Column(Integer, primary_key= True, nullable= False, unique= True, autoincrement=True)
userid = Column(String(50), ForeignKey('users_table.userid'), nullable= False, unique= True)
status = Column(String(50), default= 'active', nullable= False)
updated_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)
运行服务器时,出现以下错误:
"When initializing mapper Mapper|users_table|users_table, expression 'user_status_table' failed to locate a name (\"name 'user_status_table' is not defined\").
如果这是一个类名,请考虑在定义了两个从属类之后,将这个Relationship()添加到类中。”
答案 0 :(得分:0)
正如我所看到的,您正在尝试在users_table和user_status_table之间建立一对一的关系,因为您希望user_status_table.userid是唯一的,要使用 uselist 标志
来实现这一点下面是一个简单的示例:
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, back_populates="parent")
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
parent = relationship("Parent", back_populates="child")