python - 令人困惑的新模型`unique = True`行为
问题描述
unique
属性的行为neomodel.StructuredNode
让我有点困惑。
谁能指出我解释这一点的文档?或者让我知道我在误解什么?
该模型:
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=True
组合required=False
。如果一个属性被设置为唯一,那么它也会被自动视为必需的(可能是因为否则,您可能有两个或多个具有空属性的节点,这不会是唯一的)。
推荐阅读
- python - 如何将逗号分隔的字符串拆分为字符串列表?
- javascript - 如何使用 Chart.js 指定“每个数据集”解析?
- apache-kafka - 删除 Kaka 日志压缩主题中的所有记录
- reactjs - 当我将我的 react 应用程序部署到 gh-pages 时,为什么我会丢失我的图像?
- python - 如何在不使用 Jupyter 的情况下捕获所有 Python 解释器输出
- excel - 如果下面的单元格上的值为 TRUE,如何突出显示整行?
- r - 在 R 中创建列时尝试应用非函数
- recursion - 如何以递归方式更改字符串,将数字添加到字符串并将每个数字添加到列表中
- python - Python中的未知错误与尝试循环后的代码
- r - 可重复的纵向报告写作