0

我对查询相关节点感到完全困惑。在我的 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)

可以请人帮忙吗?这种查询对我的应用程序来说是必不可少的,在解决这个问题之前我不能更进一步。

4

0 回答 0