【发布时间】:2015-04-24 22:45:32
【问题描述】:
我有一个使用 Flask+MongoEngine 创建的应用,并且我有一个像这样的“用户文档”:
class User(db.Document):
username = db.StringField(max_length=MAX_USERNAME_CHARS)
name = db.StringField(max_length=70)
#[...]
email = db.EmailField(max_length=50, required=True)
#[...]
meta = {
'indexes': ['-created_at', 'email'],
'ordering': ['-created_at']
}
#[...]
到目前为止,我一直在控制器中检查“用户名”和“电子邮件”的重复,但我仍然在 mongo 中有一些用户的这些重复字段,现在我想设置这些字段(“用户名”和“电子邮件” ") 是唯一的,不可为空且是必需的。
我正在搜索文档,现在我知道我可以通过这个声明来做到这一点:
email = db.EmailField(max_length=50, required=True, unique=True)
但如果文档是之前创建的,MongoEngine 不会再次设置此项。
所以,我从现在开始寻找一种方法(一旦解决了已经重复的问题)不会再次出现重复字段。
它正在生产的应用程序有很多注册用户。 我可以使用 mongo 控制台设置一些索引或一些。
【问题讨论】:
标签: python mongodb flask mongoengine flask-mongoengine