我在尝试查询相关节点时感到很困惑。 在我的models.py中,我有:
class Person(models.NodeModel):
name = models.StringProperty()
age = models.IntegerProperty()
friends = models.Relationship('self',rel_type='friends_with', related_name = 'friends')
class Pet(models.NodeModel):
name = models.StringProperty()
owner = models.Relationship(Person,
rel_type='owns',
single=True,
related_name='pets', preserve_ordering=True
)
class Place(models.NodeModel):
name = models.StringProperty()
inhab = models.Relationship(Person,
rel_type='lives_in',
single=True,
related_name = 'place', preserve_ordering=True
)
loc = models.Relationship('self', rel_type = "has_inhabitants", related_name = 'has_inhab', preserve_ordering=True)
我创建了一些节点和关系。
>>> pete = Person.objects.create(name='Pete', age=30)
>>> garfield = Pet.objects.create()
>>> pete.pets.add(garfield)
>>> pete.save()
>>> pete.pets.all()
[<Pet: Pet object>]
在这种情况下,我可以成功查看与Pete相关的宠物节点。 然后我为伦敦创建了一个节点,Pete居住在那里,我想表达一个事实,即伦敦有皮特作为居民:
>>> london = Place.objects.create(name='London')
>>> london.has_inhab.add(pete)
>>> london.save()
然后我尝试列出我刚刚添加的内容,并且总失败了! :
>>>london.has_inhab.all()
[]
同时这个关系可以在webadmin界面中看到!在图形模式和shell中:
neo4j-sh (London,26)$ ls
==> *name =[London]
==> (me)<-[:<<INSTANCE>>]-(mydb:Place,5)
==> (me)<-[:has_inhabitants]-(Pete,30)
可以请别人帮忙吗? 这种查询对我的应用程序至关重要,在问题得到解决之前我无法再深入了解。