我对查询相关节点感到完全困惑。在我的 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 相关的 pet-node。然后我为皮特居住的伦敦创建了一个节点,我想表达一个事实,即伦敦有皮特作为居民:
>>> 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)
可以请人帮忙吗?这种查询对我的应用程序来说是必不可少的,在解决这个问题之前我不能更进一步。