這是我想要的模型的情況:如何設計同爲2個表之間的2個不同的許多一對多的關係與backref的/ back_populate的
有users
,這可以劃分爲rider
或driver
。每個ride
具有rider
和driver
。我可以想象使用ride
對象,在那裏我可以打電話ride.driver
或ride.rider
。但是我發現很難在另一個方向上推論它。對於任何用戶u
,當我撥打u.rides
時,不清楚是否應該返回其中u
是駕駛員或駕駛員的乘坐。
我也可以單獨有兩個關係,以便u.rides_as_driver
返回乘坐者,其中u是驅動程序,u.rides_as_rider
返回乘車者,其中u是乘客。
這是一個很好的方法來模擬我剛剛描述的關係嗎?
更新
如果這是一個好辦法,我怎麼在SQLAlchemy中達致這?特別是,如何在此設計中使用backref?
下面是我的嘗試:
class Ride:
driver = db.Relationship('User', primaryjoin=driver_id==user.id)
rider = db.Relationship('User', primaryjoin=rider_id==user.id)
class User:
rides_as_rider = db.Relationship('Ride', primaryjoin=id==ride.rider_id)
rides_as_driver = db.Relationship('Ride', primaryjoin=id==ride.driver_id)