2016-11-21 3 views
1

上記のエラーが発生します。私は、既存のdbフィールドidを一意に設定して削除しました。しかし、私はNotUniqueError:重複したユニークキーを保存しようとしました

cls.objects.update(**{"unset__id": 1}) 

私も使ってid属性を設定解除しようとした

class Users(db.Document, UserMixin): 
    name = db.StringField(max_length=50) 
    email = db.StringField(max_length=255) 
    password = db.StringField(max_length=255) 
    city = db.StringField(max_length=125) 
    active = db.BooleanField(default=True) 
    company = db.StringField(max_length=255) 
    type = db.StringField(max_length=15) 
    confirmed_at = db.DateTimeField() 
    role = db.ReferenceField(Role) 

    meta = {'strict': False} 

以下の例外

raise NotUniqueError(message % unicode(err)) 
NotUniqueError: Tried to save duplicate unique keys (E11000 duplicate key error index: test.users.$id_1 dup key: { : null }) 

マイuserテーブルのように見えるが、得たが、それはこの例外をスローに保存、

raise OperationError(u'Update failed (%s)' % unicode(err)) 
OperationError: Update failed (Mod on _id not allowed) 

idフィールドなしでユーザーモデルを保存したいだけです。

+0

UserMixinクラスとは何ですか? – sergiuz

+0

フラスコからのパッケージです。セキュリティパッケージ 'from flask.ext.security import UserMixin' –

答えて

1

list_indexes()を呼び出すと、idフィールドに一意のインデックスが表示されます。

db.collection.dropIndex()を使用して、コレクションのidフィールドにユニークインデックスをドロップする必要があります。

mongoengineがdrop_indexクラスメソッドを提供しているかどうかはわかりませんが、これはシェルから実行できます。

関連する問題