我正在设计一个数据库,其中user是超类,Customer和Admin继承user类。因此,根据SQLAlchemy中的documentation,我定义如下
用户类
class User(Base):
__tablename__ = 'user'
username = Column(String(40), primary_key=True)
is_verified = Column(Boolean, default=True)
type = Column(String(20), nullable=True)
password = Column(String(40))
first_name = Column(String(50), nullable=True)
last_name = Column(String(50), nullable=True)
image_url = Column(String(250), nullable=True)
email = Column(String(100), nullable=True)
phone = Column(String(15), nullable=True)
addresses = relationship("Address", back_populates="user")
customer = relationship("Customer", uselist=False, back_populates="user")
admin = relationship("Admin", uselist=False, back_populates="user")
def hash_password(self, password):
self.password = pwd_context.encrypt(password)
def verify_password(self, password):
return pwd_context.verify(password, self.password)
客户类别
class Customer(Base):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
username = Column(String(40), ForeignKey('user.username'))
user = relationship("User", back_populates="customer")
products = relationship("Review")
cart = relationship("Cart", uselist=False, back_populates="customer")
管理类
class Admin(Base):
__tablename__ = 'admin'
id = Column(Integer, primary_key=True)
username = Column(String(20), ForeignKey('user.username'))
user = relationship("User", back_populates="admin")
问题是用户和客户是一对一的,用户和管理员是一对一的。但我在用户类中无视admin和customer
此外,当我删除用户时,它不会自动删除客户
实现这个场景的正确方法是什么
使用
cascade="save-update, merge, delete"
delete级联表示当一个“父”对象被标记为删除时,它的相关“子”对象也应该被标记为删除。例如,如果我们有一个配置了delete cascade的关系User.addresses
相关问题 更多 >
编程相关推荐