[英]Filed in SQLAlchemy of user's list
我有一个模型,即“用户”,其中该模型中有一个字段,我想存储“用户”列表。 这个想法是,您可以添加油炸物并将其存储在某个地方。
class User (db.Model):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String(50), unique = True)
email = Column(String(120), unique = True)
password = Column(String(50))
date = Column(DateTime(), default=datetime.now())
friends = "Should be a list of users"
我以为有一个字符串,每个字符串的ID为每个用户的ID,但是,是否有可能通过与同一模型的关系来做到这一点? 像这样:
friends = relationship("User")
非常感谢!
基于Adjacency List Relationships
建议解决方案仅在某人可以成为最多一个人的朋友的情况下才有效,我认为在现实世界中并非如此。
在这种情况下,您需要应用的模式称为自参考多对多关系 。 请阅读上面链接的示例。 为了使其适用于您的模型,您需要创建其他表来保留成对的朋友,并按如下所示配置关系:
# object model
t_userfriend = Table("user_friend", Base.metadata,
Column("user_id", Integer, ForeignKey("users.id"), primary_key = True),
Column("friend_id", Integer, ForeignKey("users.id"), primary_key = True),
)
class User (Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String(50), unique = True)
# ...
friends = relationship("User",
secondary = t_userfriend,
primaryjoin = (id == t_userfriend.c.user_id),
secondaryjoin = (id == t_userfriend.c.friend_id),
backref = "friend_of",
)
我想您需要问自己的另一个问题是,在模型中A是否是B的朋友,这是否意味着B是A的朋友? 万一这是真的,您可能想要/需要:
您可以使用邻接列表关系,并且此链接具有相同的问题,因此您可以从中学习。 如何在SQLAlchemy(python,flask)中为模型用户建立多对多关系
是的,您可以使用邻接列表关系来做到这一点。
class User (db.Model):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String(50), unique = True)
email = Column(String(120), unique = True)
password = Column(String(50))
date = Column(DateTime(), default=datetime.now())
friends = relationship("User",
backref=backref('parent', remote_side=[id])
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.