1

Django/MySQL から Flask/mongo-engine へのアプリケーションの改良に取り組んでおり、idフィールドを持つモデルの作成に問題があります。これはサンプル モデルです。

class Location(db.Document):
    id = db.IntField(unique=True)
    name = db.StringField(max_length=200, required=True)
    # other fields in the document ...

下位互換性のために、名前がそのままのフィールドが必要idです。これは MySQL では正常に機能していましたが、mongo-engine はField is required: ['id'] Invalid Object ID: ['auto_id_0']上記のモデルのドキュメントに対して ValidationError を返します。

また、次のdb_fieldようにパラメーターを使用してみました

id = db.IntField(db_field='l_id', unique=True)

...しかし、役に立たない。

ObjectIDmongodbのデフォルト フィールドをオーバーライドするつもりはないことに注意してください。逆シリアル化時にフィールドの名前を変更する以外に、これに対する回避策はありますか?

4

1 に答える 1

1

試す

class Location(db.Document):
    myid = db.IntField(db_field='id', unique=True)
    name = db.StringField(max_length=200, required=True)
    # other fields in the document ...

フィールドの名前が myid であるかのように操作します。

Location.objects.create(myid=real_id)
Location.objects.filter(myid=real_id)
于 2016-07-14T09:05:16.183 に答える