Наследование SQLAlchemy не работает
Есть Base класс, от него наследуется класс Users
От класса Users наследуются классы Clients и Admins
При помощи Base.metadata.create_all все таблицы в БД создаются.
В таблице Users есть поля descripton и created_at, которые объявлены в Base.
В таблицах Clients и Admins этих полей нет. Также нет полей, которые были объявлены в Users (tg_id, username).
Есть только поля, которые были объявлены в самих классах Admins и Clients (id, admin_name и id, first_name соответственно)
Если в классах Admins и Clients не указывать поле id с ForeignKey, то выдаёт ошибку "не могу установить зависимость между Users и Admins/Clients Если указать ForeignKey к Base, то такая же ошибка (наследование же прописано от Users)
Собственно вопросы: Что нужно сделать, чтобы в Admins и Clients автоматически создавались поля, которые есть и в Base и в Users? (без копипасты явного объявления тех же самых полей, что и в родительских классах)
class Base(AsyncAttrs, DeclarativeBase):
__tablename_ = "base"
id: Mapped[int] = mapped_column(primary_key=True)
description: Mapped[str | None]
created_at: Mapped[datetime] = mapped_column(server_default=func.now())
class Users(Base):
__tablename__ = "users"
tg_id: Mapped[int | None] = mapped_column(BigInteger, unique=True)
username: Mapped[str | None]
class Clients(Users):
__tablename__ = "clients"
id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE"), primary_key=True)
first_name: Mapped[str | None]
class Admins(Users):
__tablename__ = "admins"
id: Mapped[int] = mapped_column(ForeignKey("users.id", ondelete="CASCADE"), primary_key=True)
admin_name: Mapped[str | None]