neo4j-contrib/neomodel

Unable to access property values on nodes that inherit from SemiStructuredNode

krashr-ds opened this issue · 1 comments

Expected Behavior (Mandatory)

Hello!

I have a series of classes that inherit from SemiStructuredNode.

They work great, until I try to access properties on the nodes.

I can bring back a list of nodes with list_of_nodes = SourceObject.nodes.all()

When I iterate over the nodes, I expect to be able to see the VALUES of properties when I access them, for example, I expect:

for so in list_of_nodes:
print(so.name)

to print the VALUES of the name properties of the SourceObject nodes in the list.

Actual Behavior (Mandatory)

That doesn't happen!
Instead, I get a series of property references, like this:

<neomodel.properties.StringProperty object at 0x000001A6AF356C40>
<neomodel.properties.StringProperty object at 0x000001A6AF356610>
<neomodel.properties.StringProperty object at 0x000001A6AF356610>

How to Reproduce the Problem

Create a python program, like so:

import neomodel
from neomodel import config, Traversal
from lib.cs_models import SourceObject, SourceExpression

try:
config.DATABASE_URL = "bolt://neo4j:yourpassword@localhost:7687"
except:
raise Exception("Unable to connect to Neo4j test db.")
finally:
print("Neo4j TEST connection established.")

get SourceObjects

source_objects = SourceObject.nodes.all()
for so in source_objects:

print(so.SourceObjectName)

RESULTS:

Neo4j TEST connection established.
<neomodel.properties.StringProperty object at 0x000001EEEA85EA60>
<neomodel.properties.StringProperty object at 0x000001EEEA85EA60>
<neomodel.properties.StringProperty object at 0x000001EEEA85EA60>

SPECS:

Windows 10 PC
IDE: Spyder
Conda env
Python version: Python 3.9.17
Neomodel version: 5.2.1

Please let me know if I'm doing something wrong here!

Thanks.

Ok, so I figured this out. It has to do with super constructors being called at every level, regardless. Thanks!