Создание отношения «многие ко многим ко многим» в SQLAlchemy - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть три модели следующим образом:

users_projects = db.Table('users_projects',
    db.Column('user_id', db.Integer,
              db.ForeignKey('user.id'), primary_key=True),
    db.Column('project_id', db.Integer,
              db.ForeignKey('project.id'), primary_key=True)
)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    projects = db.relationship('Project', secondary=users_projects , lazy='dynamic',
                               back_populates='users')
    tasks = # What should I put here?

class Project(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)

    users = db.relationship('User', secondary=users_projects , lazy='dynamic',
                               back_populates='projects')
    tasks = db.relationship('Task', backref='project', lazy='dynamic')

class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False)

Я бы хотел, чтобы у всех пользователей были такие задачи, которые я мог бы выполнить User.query.first().tasks.order_by(Task.due_date.desc()), что потребовало бы отношения «многие ко многим ко многим». Как бы я создал такие отношения? Это лучший способ обработки этого запроса?

...