python-3.x - 如何使用 py2neo.ogm (v3) 为不同类型的节点创建双向关系?
问题描述
我对 py2neo ogm 很陌生。我设置了两种类型的节点:用户和发布。Post 具有发布者的 user_id,并且有日志显示用户何时看到帖子。所以图表看起来像这样:
(:Post)-[:published_by ]->(:User), (:User)-[:views ]->(Post)
但我无法使用 py2neo ogm 对双向性质进行建模。我只能通过在发布之前为用户定义类来将任一帖子与用户相关联,反之亦然。
我是这样写模型的:
class User(GraphObject):
name = Property()
user_id = Property()
# views = RelatedTo(Post)
published = RelatedFrom("Post","PUBLISHED_BY")
class Post(GraphObject):
name = Property()
post_id = Property()
published_by = RelatedTo(User)
viewed_by = RelatedFrom("User","VIEWS")
由于 Post 类是在 User 之后编写的,如果我取消注释“views”关系,我会收到一个错误,因为我试图在定义它之前引用 Post。
我不确定python中是否有一些东西可以用来解决引用问题,或者ogm中是否有另一个不同的关系对象可以用于双向关系?
解决方案
好的,我想通了。我必须简单地在 Post 类中提供一个传入关系并使用它来引用它的关系。
这是代码:
class User(GraphObject):
name = Property()
user_id = Property()
published = RelatedFrom("Post","PUBLISHED_BY")
class Post(GraphObject):
name = Property()
post_id = Property()
published_by = RelatedTo(User)
viewed_by = RelatedFrom(User,"VIEWS")
要查看哪些用户查看了帖子:
p = Post.select(graph).first()
rel = p.viewed_by
print(list(rel))
推荐阅读
- sql - 你能解释一下为什么在语法错误下面的附加代码中吗?
- reactjs - Gatsby 站点托管在 Microsoft IIS 服务器上,为静态资产和其他文件提供 404 错误
- python - 具有多个值的 ModelForm 没有响应
- javascript - 如何根据先前的输入过滤输入字段
- python - 生成锦标赛程序python
- python - Tkinter 可点击/可选择的表格行(检测点击的行)
- plotly - Plotly:更改图例标签并聚合数值
- c++ - 使用索引列表提升多索引删除元素
- python - Xpath 定位器无法检测到元素
- c - “'return' 带有一个值,在返回 void 的函数中”当返回一个结构时