Neo4django:对某些关系的查询返回空

时间:2014-05-11 21:47:13

标签: django neo4django

我在尝试查询相关节点时感到很困惑。 在我的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)

可以请别人帮忙吗? 这种查询对我的应用程序至关重要,在问题得到解决之前我无法再深入了解。

0 个答案:

没有答案