繁体   English   中英

令人困惑的新模型`unique=True`行为

[英]Confusing neomodels `unique=True` behaviour

neomodel.StructuredNodeunique属性的行为让我有点困惑。

任何人都可以指出我对此进行解释的文档吗? 或者让我知道我的误解?

该模型:

class Person(neomodel.StructuredNode):

    uuid = neomodel.UniqueIdProperty()

    legacy_external_id = neomodel.StringProperty(unique=True, required=False)

并非所有的Person实例都有这个“legacy_external_id”,但是它存在的地方必须是唯一的。

上面的代码在我看来适合该描述。

然而在实践中,输出是:

In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': '7d7e5c2224d647e9a87d23b9cb1c4153', 'legacy_external_id': 'u12345'} >

In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': 'ed7690f8f28b4cf288c35d2130a2e6e4', 'legacy_external_id': 'u12345'} >

In[]: p = Person(legacy_external_id='u12345')
In[]: p.save()
Out[]: < Person: {'uuid': '7393a4b5022d40d8aca002cecac9b124', 'legacy_external_id': 'u12345'} >

只是快乐地增殖节点(没有错误或警告)不是我预期的行为。

我可以编写自己的验证,但在我深入研究之前,我有兴趣了解我的误解。

任何建议表示赞赏,谢谢!

首先,它应该是unique_index=True ,而不是unique=True

此外,当前版本的 Neomodel 不支持unique_index=Truerequired=False 如果一个属性被设置为唯一的,那么它也会被自动视为需要(大概是因为否则,你可能有两个或多个具有 null 属性的节点,这不会是唯一的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM