データベースを照会しようとしています。現在、一部のレコードには、モデルスキーマに含まれていない余分なフィールドがあります(エラーのため、これらのケースを処理したい)。 DBをクエリしてレコードをスキーマに変換しようとすると、次のエラーが発生します。
FieldDoesNotExist
The field 'X' does not exist on the document 'Y'
スキーマとは異なるデータベース内の追加フィールドがあるためです。
Mongoengineの追加フィールドに対するこのスキーマ検証を無視する方法はありますか?
データの読み込み中に追加のフィールドがある場合にこのエラーを無視するには、メタディクショナリでstrict
をFalse
に設定します。
class User(Document):
email = StringField(required=True, unique=True)
password = StringField()
meta = {'strict': False}
モデルを定義するときにDocumentの代わりにDynamicDocumentを使用すると、dbスキーマの余分なフィールドを無視できます。
スキーマ検証をスキップしたいので、ドキュメントを保存すると
document_name.save(validate=False)
Mon.DynamicDocumentから拡張できます。
class AF(mon.DynamicDocument):
meta = {
'collection': 'af'
}
user_id = mon.StringField(db_field='customer_user_id')
ドキュメントからご覧いただけます。ダイナミックドキュメントクラスは、柔軟で拡張可能で制御されていないスキーマを許可します。