我对py2neo ogm非常陌生。我已经设置了2种类型的节点:User&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之后编写的,因此如果取消注释“视图”关系,则会出现错误,因为在定义Post之前我试图引用Post。
我不确定python中是否有可以解决参考问题的东西,或者ogm中是否有另一个可以用于双向关系的关系对象?
答案 0 :(得分:0)
好的,我知道了。我只需要在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))