Я делаю приложение для списка желаний и хочу иметь схему БД, как показано ниже, но я не могу понять, как сделать соединения в sqlalchemy (это первый раз, когда я использую sqlalchemy).
Схема БД
( пользователь: wish = 1: N )
Когда я выбираю пользователя, я хочу получить список желаний, и в каждом желании может быть свой пользователь (организатор желаний)
Так что я мог бы сделать что-то вроде этого
first_user = User.query.get(1)
user_wishes = first_user.wishes.all()
for wish in user_wishes:
if wish.arranger is not None:
print(wish.id, wish.owner.id, wish.arranger.id)
else:
print(wish.id, wish.owner.id)
Я просмотрел несколько учебных пособий, но нашел только простые отношения.
Мне нужно отношение от Пользователь до Желание и в Желание , обратно к UserWishOwner (пользователь, от которого я получил здесь ) a UserWishArranger (если есть).
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
wishes = db.Column(db.relationship('Wish', backref='owner', lazy='dynamic'))
class Wish(db.Model):
id = db.Column(db.Integer, primary_key=True)
owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), index=True)
arranger_id = db.Column(db.Integer, db.ForeignKey('user.id'), index=True)
arranger = relationship("User", foreign_keys=[arranger_id])
Я придумал какой-то код, но немного запутался, потому что owner_id
и arranger_id
- это одно и то же ...
Что мне нужно сделать, чтобы эта работа работала?