我是py2neo ogm的新手。我设置了两种类型的节点: User和Post。帖子有发布它的人的user_id,还有显示用户何时看到帖子的日志。因此,该图如下所示:
(:Post)-:published_by ->(:User),(:User)-:views ->(Post)
但我无法使用py2neo ogm对双向特性进行建模。我只能通过在post之前为user定义类来关联post和user,反之亦然。
我是这样写模型的:
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中是否有另一个不同的关系对象可以用于双向关系?
发布于 2019-09-03 13:39:45
好吧,我想通了。我只需要在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))
https://stackoverflow.com/questions/57686268
复制相似问题