Я проектирую базу данных, в которой пользователь является суперклассом, а клиент и администратор наследуют класс пользователя.Итак, в соответствии с документацией в SQL SQLAlchemy я определяю так:
Класс пользователя
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 в классе пользователя.
Далее, когда я удаляю пользователя, он не удаляет клиента автоматически.
Как правильно реализовать этот сценарий?