【发布时间】:2020-11-04 11:13:50
【问题描述】:
我最近将 Alembic 添加到我的 Flask 项目中,现在我的 SQLAlchemy 关系排序与 order_by 不再有效。我相信这是因为运行的迁移文件没有获取 order_by 参数,我不知道如何获取它。
我的模型看起来像...
class Project(db.Model):
__tablename__ = 'project'
id = db.Column(db.Integer(), primary_key=True)
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer(), primary_key=True)
project_id = db.Column(db.ForeignKey(Project.id, ondelete="cascade"), index=True, nullable=False)
project = db.relationship(Project, backref='members', order_by="User.id.desc()")
在 Alembic 迁移中,我看到以下内容...
...
op.create_table('user',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('project_id', sa.Integer(), nullable=False),
...
sa.ForeignKeyConstraint(['project_id'], ['project.id'], ondelete='cascade'),
)
op.create_index(op.f('ix_user_project_id'), 'user', ['project_id'], unique=False)
...
查看迁移,我不太确定 SQLAlchemy 是如何实际处理这种关系的,因为我没有看到任何地方提到的任何类型的 backref,我猜 SQLAlchemy 只是运行一个查询来获取项目的用户。
任何帮助将不胜感激!
【问题讨论】:
标签: flask sqlalchemy alembic flask-migrate