![](/img/trans.png)
[英]How to change the behaviour of unique true in django model?
[英]Confusing neomodels `unique=True` behaviour
neomodel.StructuredNode
上unique
属性的行为让我有点困惑。
任何人都可以指出我对此进行解释的文档吗? 或者让我知道我的误解?
该模型:
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
。 如果一个属性被设置为唯一的,那么它也会被自动视为需要(大概是因为否则,你可能有两个或多个具有 null 属性的节点,这不会是唯一的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.