Как фильтровать узлы NeoModel по отношениям в Python - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть 2 StructuredNodes User и Token как отношение один к одному.Исходя из использования Django для реляционных баз данных, если я хочу, чтобы пользователь получил токен, я просто сделал бы User.objects.get(token__key=token).

Но используя Neo4j с NeoModel, я изо всех сил пытаюсь найти способ сделатьэтот простой запрос.Должен ли я использовать Cypher для этого?если так, то как?

Кроме того, когда у меня есть экземпляр 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., а token.user возвращает объект 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 голосов
/ 11 января 2019

Может быть немного поздно для ответа, но,

Выстрел в темноте, но ваш RelationshipTo в вашем классе токенов направлен на другой токен, а не на конкретного пользователя.

...