Python Flask SQLAlchemy - один ко многим

Многое что настроил и работает, но хочется большее ООП получить. У меня есть основания модель Users. Дополнительно к ней есть ешё несколько таблиц. Выглядит примерно так:

class Users(db.Model):
query: db.Query
__bind_key__ = databaseName
__tablename__ = usersTable

id = db.Column('id', db.Integer(), primary_key=True, autoincrement=True)
firstName = db.Column('first_name', db.String(50))
lastName = db.Column('last_name', db.String(50))
companyName = db.Column('company_name', db.String(255))
phoneNumber = db.Column('phone_number', db.String(14))
isResident = db.Column('is_resident', db.Integer(), nullable=False, default=0)
active = db.Column('active', db.Integer(), nullable=False)
createdAt = db.Column('created_at', db.DateTime())
updatedAt = db.Column('updated_at', db.DateTime())
verified = db.Column('verified', db.Integer(), nullable=False, default=0)

class UserEmails(db.Model):
query: db.Query
user: db.Model
__bind_key__ = databaseName
__tablename__ = userEmailsTable

id = db.Column('id', db.Integer(), primary_key=True, autoincrement=True)
userID = db.Column('user_id', db.Integer(), db.ForeignKey('{0}.id'.format(usersTable)), nullable=False)
email = db.Column('email', db.String(255), unique=True, nullable=False)
passwordHash = db.Column('password_hash', db.String(64), nullable=False)
createdAt = db.Column('created_at', db.DateTime(), nullable=False)
updatedAt = db.Column('updated_at', db.DateTime(), nullable=False)
active = db.Column('active', db.Integer(), nullable=False)
emailVerified = db.Column('email_verified', db.Integer(), nullable=False, default=0)

Подскажите как мне переписать этот код, чтобы я мог написать следующий код:

Users.query.filter((Users.Emails.email == '[email protected]') & (Users.Emails.active == 1)).one()

или к примеру есть ещё модель Commens и обртиться к ней так:

c = User.query.filter(Users.id == 1)
for i in c:
print(i.comment)

Ответы (0 шт):