验证MongoAlchemy的唯一性?

时间:2014-08-25 14:59:26

标签: python flask mongoalchemy

我正在尝试确保MongoAlchemy支持的模型中的名称唯一性,并且不确定如何去做。

我的第一次尝试涉及编写一个包装验证器,它检查具有相同name的现有数据库条目并对其进行检查(以确保存在0或1个具有相同名称的条目),但这失败,因为验证器只接收带有name的字符串,而不是整个对象(因此不可能比较mongo_id)。

确保单个班级的对象都具有唯一name的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

您应该使用唯一索引。

http://www.mongoalchemy.org/api/schema/document.html#mongoalchemy.document.Index

>>> class Person(Document):
...     name = StringField()
...     name_index = Index().ascending('name').unique()

数据库将为您强制执行约束。它只是包含了mongo已经存在的代码:

http://docs.mongodb.org/manual/tutorial/create-a-unique-index/