如何在Python中按关系过滤NeoModel节点

时间:2018-12-12 00:06:33

标签: python django neo4j cypher neomodel

我有两个StructuredNodes UserToken一对一的关系。 来自将Django用于关系数据库,如果我想给用户一个令牌,我只需做User.objects.get(token__key=token)

但是将Neo4j与NeoModel结合使用时,我正在努力寻找一种方法来执行此简单查询。我必须为此使用密码吗?如果可以,怎么办?

此外,当我有User实例时,我可以执行user.token.single()来获得Token实例,但是反之亦然。 token.user.single()返回CardinalityViolation: Expected: one relationship in a outgoing direction of type FOR_USER on node (49) of class 'Token', got: none.和令牌。用户返回neomodel.cardinality.One对象。

class User(DjangoNode):
    uid = UniqueIdProperty()
    firstname = StringProperty(index=True, required=True)
    lastname = StringProperty(index=True, required=True)
    email = EmailProperty(unique_index=True, required=True)
    password = StringProperty(requried=True)

    token = RelationshipFrom('Token', 'OWNS_TOKEN', cardinality=One)

    def post_create(self):
        token = Token().save()
        self.token.connect(token)

class Token(DjangoNode):
    user = RelationshipTo('Token', 'FOR_USER', cardinality=One)

    key = StringProperty(unique_index=True, default=generate_key)
    created = DateTimeProperty(default_now=True)

1 个答案:

答案 0 :(得分:0)

答案可能会晚一点,

这里暗中射击,但是您的Token类中的RelationshipTo指向另一个Token,而不是特定的用户。