'Alembic autogenerate doesn't detect column detect on parent class (Alembic + Ormar ORM)

Here what I want to achieve, I want models common fields inside a base model namely BaseModel as pictured below.

Mixins

class TimeStampMixin:
    created: datetime.datetime = ormar.DateTime(default=datetime.datetime.now)
    updated: datetime.datetime = ormar.DateTime(default=datetime.datetime.now)


class IdMixin:
    id: uuid.UUID = ormar.UUID(default=uuid.uuid4, primary_key=True)

Base Model

class BaseModel(ormar.Model, IdMixin, TimeStampMixin):
   ...

Concrete classes

class Concrete(BaseModel):
   class Meta(BaseMeta)

what I expect is to have all id, created, updated added to the auto-generated migration, but below is the output of alembic revision --autogenerate

Alembic output

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('concretes',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.PrimaryKeyConstraint('id')
    )

def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('concretes')
Note: When added directly to Concrete model, all changes are perfectly detected, but I have lots of classes and don't want to repeat myself.

Can somebody help with a link or an explanation on how to achieve this ?



Solution 1:[1]

I end-up using abstract model instead of Mixins (https://collerek.github.io/ormar/models/inheritance/). Hopes it helps somebody else.

class TimeStampMixin(ormar.Model):
    created: datetime.datetime = ormar.DateTime(default=datetime.datetime.now)
    updated: datetime.datetime = ormar.DateTime(default=datetime.datetime.now)

    class Meta(ormar.ModelMeta):
       abstract = True
       ...

class IdMixin(ormar.Model):
    id: uuid.UUID = ormar.UUID(default=uuid.uuid4, primary_key=True)
    class Meta(ormar.ModelMeta):
       abstract = True
       ...

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 user13837279