使用neo4django时未创建节点属性

时间:2013-07-11 17:55:27

标签: django django-models neo4j neo4django

我在Model创建的django 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@company.com')
>>> p.id
6
>>> Person.objects.get(id='6')
<Person: Person object>
>>> Person.objects.get(email=u'email@company.com')
Traceback [bla bla bla]
[...]
DoesNotExist: Person matching query does not exist.
>>>

我还检查了Neo4J网页界面,我看到了创建的节点,但没有任何属性!

此问题看起来像here,但我不确定这是否是同一个问题。

我有Django 1.4.5Neo4J 1.8.2

2 个答案:

答案 0 :(得分:3)

马特非常感谢您的推荐。我总是运行主git版本。

我升级到Django 1.5.1,问题就消失了。我仍然运行Neo4J的1.8.2版本。

<强>更新

试图弄明白,我回到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()

然后一切都按预期工作。

实际上,即使您升级到nameDjango 1.5.1问题仍然存在,所以我猜在创建属性时会出现一些问题。

答案 1 :(得分:0)

您使用的是什么版本的neo4django?我建议使用neo4django master从Github(pip install -e git+https://github.com/scholrly/neo4django#egg=neo4django-dev)尝试相同的代码。