2013-07-11 55 views
1

我使用neo4django創建了Modeldjango使用neo4django時未創建節點屬性

class Person(models.NodeModel): 
    """ 
    Persons of a Company 
    """ 
    email = models.EmailProperty(required=True, unique=True, indexed=True, 
           name=_(u'email'), 
           verbose_name=_(u'person email address'), 
           help_text=_(u'bla bla bla some help text')) 
    full_name = models.StringProperty(name=_(u'Person full name')) 

    # Neo4J Relationships 
    role = models.Relationship(Role, rel_type='has_role', 
            direction='Outgoing', 
            related_name='persons') 
    company = models.Relationship(Company, rel_type='works_to', 
              direction='Outgoing', 
              related_name='employees') 

我嘗試運行Django shell

>>> p = Person.objects.create(email=u'[email protected]') 
>>> p.id 
6 
>>> Person.objects.get(id='6') 
<Person: Person object> 
>>> Person.objects.get(email=u'[email protected]') 
Traceback [bla bla bla] 
[...] 
DoesNotExist: Person matching query does not exist. 
>>> 

我還檢查Neo4J Web界面上,我看到了創建的節點,但沒有任何屬性!

此問題看起來像提到的here,但我不確定這是否是同一個問題。

我已經Django 1.4.5Neo4J 1.8.2

回答

3

馬特非常感謝您的建議。我總是運行主git版本。

我升級到Django 1.5.1並且問題消失。我仍然運行Neo4J的1.8.2版本。

UPDATE

試圖弄明白,我恢復到Django 1.4.5和一些研究之後,我發現,這個問題是因爲在節點屬性的name屬性的實際。

所以,如果我改變這個

full_name = models.StringProperty(name=_(u'Person full name')) 

這個

full_name = models.StringProperty(verbose_name=_(u'Person full name')) 

或本

full_name = models.StringProperty() 

然後一切按預期工作。

其實name問題,如果您升級到Django 1.5.1,所以我想有一些問題,其中具有一個name屬性時產生的性能,即使存在。

+0

哇 - 我很驚訝這個作品,特別是因爲我們沒有正式支持1.5。真棒。 –

+0

它的工作原理,但有一些小故障,我會在這裏或在github上報告它們(無論您建議如何),並可能能夠爲項目提供任何更新。 – nikolasd

+0

我肯定會在GitHub上報告。你遇到的問題的路線圖真的會加快官方的支持(https://github.com/scholrly/neo4django/issues/143)。 –

0

什麼版本neo4django您使用的是?我建議嘗試與Github上的neo4django master(pip install -e git+https://github.com/scholrly/neo4django#egg=neo4django-dev)相同的代碼。