混淆的新模型`unique=True`behaviou

2024-05-20 00:04:59 发布

您现在位置:Python中文网/ 问答频道 /正文

neomodel.StructuredNode上的unique属性的行为让我有点困惑

有人能告诉我解释这个的文件吗?或者让我知道我在误解什么

模型:

class Person(neomodel.StructuredNode):

    uuid = neomodel.UniqueIdProperty()

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

不是所有的Person实例都会有这个“遗留的\u外部\u 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'} >

只是愉快地增殖节点(没有错误或警告)不是我所期望的行为

我可以写我自己的验证,但在我继续之前,我有兴趣了解我的错误理解

谢谢您的建议


Tags: 文件inid属性uuidsave错误legacy
1条回答
网友
1楼 · 发布于 2024-05-20 00:04:59

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

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

相关问题 更多 >