[英]create a many to many relationship with flask_sqlalchemy
我想在用户和事件之间建立关系。 我希望用户能够注册活动。
我已经有一个一对多关系的用户和事件模型
class User(db.Model,UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer,primary_key = True)
.........
events = db.relationship('Event',backref='organiser', lazy=True)
##事件模型
class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer,primary_key = True)
........
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
我需要帮助来创建用户注册表。 该表应包含其他字段,而不仅仅是事件和用户 ID
我希望能够做这样的查询
user.event_registrations
event.event_registrations
event.event_registrations.users
user.events
这是我按照文档创建表格的尝试。
class EventRegistration(db.Model):
__tablename__ = 'event_registrations'
user_id = Column(ForeignKey('users.id'), primary_key=True)
event_id = Column(ForeignKey('events.id'), primary_key=True)
extra_data1 = Column(String(50))
extra_data2 = Column(String(50))
event = db.relationship("Event", back_populates="users")
user = db.relationship("Member", back_populates="events")
class User(db.Model):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
....
events = db.relationship("EventRegistration", back_populates="user")
class Event(db.Model):
__tablename__ = 'events'
id = Column(Integer, primary_key=True)
....
users = db.relationship("EventRegistration", back_populates="event")
帮助正确设置数据库 谢谢
创建多对多关系的正确方法是创建关联表
Events=db.Table('Events',
db.Column(db.Integer,db.ForeignKey('user.id'),primary_key=True),
db.Column(db.Integer,db.ForeignKey('event.id'),primary_key=True)
)
class User(db.Model,UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer,primary_key = True)
.........
events = db.relationship('Event',secondary=Events,backref='organiser', lazy=True)
class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer,primary_key = True)
........
如果你想了解更多关于多对多的信息,我建议你阅读这篇文章
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.