我在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.5
和Neo4J 1.8.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()
然后一切都按预期工作。
实际上,即使您升级到name
,Django 1.5.1
问题仍然存在,所以我猜在创建属性时会出现一些问题。
答案 1 :(得分:0)
您使用的是什么版本的neo4django?我建议使用neo4django master从Github(pip install -e git+https://github.com/scholrly/neo4django#egg=neo4django-dev
)尝试相同的代码。