Я использую Flask-SQLAlchemy с чертежами, в установке, основанной на cookiecutter-flask , которая решает большинство круговых проблем импорта.
Однако моя ситуация следующая. У меня есть две связанные ( на самом деле, вероятно, не имеет значения, есть ли между ними связь с базой данных или нет ) моделей / таблиц, которые объявлены в разных модулях Python. Я хотел бы расширить обе модели с помощью пользовательских методов, которые запрашивают другую модель. Минимальный пример:
# employee/models.py
class Employee(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
company_id = db.Column(db.ForeignKey('company.id'))
company = db.relationship("Company", backref="employees") # Referencing "Company" as str avoids circular import
def job_opportunities(self):
# Complicated query based on this employee's data
return Company.query.filter(...).all()
и
# company/models.py
class Company(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
def potential_new_employees(self):
# Complicated query bsaed on this company's data
return Employee.query.filter(...).all()
В обоих файлах есть метод, который должен импортировать модель, определенную в другом модуле. Я хотел бы оставить обе модели разделенными на разные модули. Что такое чистый шаблон для решения этой проблемы?