How to inherit a custom constructor for all Flask-SQLAlchemy models

Solution
db = SQLAlchemy(app)


class NewModel(db.Model):

    __abstract__ = True

    user = sa.Column(sa.String(256), nullable=False, default="User")
    uploaded = sa.Column(sa.DateTime, nullable=False, default=datetime.utcnow)

    def __init__(self, **kwargs):
        kwargs["user"] = session["username"]
        super().__init__(**kwargs)

    def save(self):
        db.session.add(self)
        db.session.commit()


# upload_file.py
class UploadFile(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.String(256), nullable=False)
    path = db.Column(db.String(256), nullable=False, unique=True)

    def __init__(self, file):
        kwargs = {
            'filename': file.filename,
            'path': secure_filename(file.filename)
        }

        super().__init__(**kwargs)
import sqlalchemy as sa
from sqlalchemy import orm
from flask import Flask
from flask_sqlalchemy import SQLAlchemy, Model, DefaultMeta

class NewModel(Model):

    user = sa.Column(sa.String(256), nullable=False, default="User")
    uploaded = sa.Column(sa.DateTime, nullable=False, default=datetime.utcnow)

    def save(self):
        db.session.add(self)
        db.session.commit()

def my_declarative_constructor(self, **kwargs):
    """This will be the `__init__` method for all models."""
    # Set attrs from kwargs using SQLALchemy's default constructor function.
    orm.decl_api._declarative_constructor(self, **kwargs)
    # Do custom attribute assignments.
    self.user = session['username']

# Create a new declarative base class that combines our constructor function,
# Flask's default metaclass and our NewModel class.
Base = orm.declarative_base(
    constructor=my_declarative_constructor, metaclass=DefaultMeta, cls=NewModel
)

# Use our declarative base class to create the db integration.
db = SQLAlchemy(app, model_class=Base)


# upload_file.py
class UploadFile(db.Model):
    ...