問題タブ [flask-mongoengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
527 参照

python - フラスコ モンゴエンジン: 選択フィールドを生成して、モデルの継承をフォームに公開します

このモデルがあるとします:

このモデルのインスタンスを編集するためのフォームを作成したいと思います。このフォームには、子クラスを選択するための選択フィールドがあります。

タイプ フィールドの追加

私がしたことは、タイプフィールドを追加することです:

このフィールドは、追加された属性 MongoEnginescen_typeに型情報が既に含まれているため、冗長です。_cls

既存の _cls 要素の使用

field_dictまた、返された by にmodel_fieldsは要素があることに気付きましたが、その_cls使用方法がわかりません。

ではfield_dict、すべてのフィールドが<UnboundField...>

_clsのようなものです<UnboundField(TextAreaField, (), {'default': None, 'description': '', 'validators': [<wtforms.validators.Optional object at 0x7fe3c983cb00>], 'label': '_cls', 'filters': []})>

しかし、フォームをインスタンス化すると、name「バインド」(推測)form.nameされ、予想される html が返されます_clsが、まだバインドされていません。

 これらの方法のいずれかが「推奨」されていますか?

型フィールド メソッドはこれまで機能していましたが、埋め込みドキュメントで継承を操作すると複雑になり、頭痛の種ではないにしても、いくつかの作業を節約できるフラスコ モンゴエンジン機能が不足している可能性があると感じています。

あるいは、このフラスコと mongoengine の wtforms の統合に期待しすぎているので、手作業で多くの作業を行う必要があります。

意味があれば、flask-mongoengine を微調整して変更を送信してもかまいませんが、正しい軌道に乗っていることを確認するために少しフィードバックをいただければ幸いです。

_cls補助的な質問:形式でこれに使用されるべきではないと仮定すると、それは何のためにここにあるのですか? たまたまモデルにあるが、そこで使用することを意図していないため、フォームになりますか? フォームインスタンスで使用できますか?

0 投票する
1 に答える
972 参照

python - 変更を伴う Mongoengine カスタム検証

以下に示すように、Mongoengine の変更操作にカスタム検証を適用しようとしています。

ただし、 を呼び出すupdate_formと、カスタム検証では更新されたデータが考慮されませんmodify。このタイプの検証を行うためのある種の事前フックはありますか?

0 投票する
3 に答える
1741 参照

pymongo - pymongo/mongoengine の pip から正しいバージョンの bson を見つける方法

私は、bson の ObjectId を使用する (python 2.7) フラスコ mongoengine アプリケーションに取り組んでいます。プロジェクトには何らかの方法で bson が必要です。アプリケーションをデプロイしようとしているホストにルート アクセス権がなく、pip install bson が失敗します。

一方、https://api.mongodb.org/python/current/installation.htmlは、このバージョンの bson を使用して pymongo の実装に依存するべきではないと述べています。ただし、pymongo-3.2.1 がインストールされているコンピューターでは、pymongo.objectId をインポートできません。

ありがとうございます!

0 投票する
1 に答える
1032 参照

mongodb - mongoengine フィルター クエリで埋め込みドキュメントを取得する

Server.objects.all()text_listデフォルトでは、クエリセットにはフィールドの値が含まれていません。これを行う必要があります-(text_listクエリセット内の各オブジェクトのフィールドの値を取得するため。

私の場合/シナリオでは、これを行うことはできません。つまり、クエリセット自体ですべてのデータを取得する必要があることを意味します(つまり、を使用せずに、ネストされたすべての詳細を取得するクエリセットが必要ですobj.text_list)

例えば

さらにmongo shell - db.server.find()ネストされたすべての埋め込みドキュメントが含まれます。

orm または raw_query を使用して mongoengine でこれを行うにはどうすればよいでしょうか。

to_json()メソッドを使用して、mongoengine ormでこの問題を解決できます

json.loads(queryset.to_json())

Server.objects.all().to_json() 埋め込みモデルの情報を含む結果を返しますが、何百万ものドキュメントでページネーションを使用する場合、これは効率的ではありません。その場合、mongo はすべてのオブジェクトを to_json に変換しようとします。

0 投票する
1 に答える
578 参照

python-3.x - ステップダウン時に MongoEngine ReplicaSet 接続が失敗する

最近、レプリカ セットで Mongoengine と Flask を使用しようとしています。接続できますが、プライマリ ノードが変更されると、接続が失われ、切断されます。

これは、動作をテストできるスニペットです。非常に便利なhttp://flip-flop.mlab.com/サイトを使用して、レプリカ セットの問題をデバッグして います。

プライマリがエラーを変更するたびに取得します: pymongo.errors.AutoReconnect: connection closed

どうもありがとう!いくつかの異なる pyMongo バージョンを試しましたが、成功しませんでした。どんな助けでも本当に、本当に感謝します!

0 投票する
1 に答える
905 参照

python - AWS + MongoDB : AWS linux インスタンスで mongo サーバーに接続するには?

AWS Linux インスタンスを起動し、こちらの指示に従って mongo をインストールして実行しました。mongo サービスが実行されており、27017 で接続を受け入れています。ただし、ポート 27017 でサーバー publik dns にアクセスすると、サーバーが応答せず、デフォルトの mongo メッセージが表示されません。

別のインスタンスで Python(Flask) サーバーを実行しようとしていて、プライベート IP を使用して mongo サーバーに接続しようとしていますが、接続できません。端末に次のエラー メッセージが表示されます。

pymongo.errors.ServerSelectionTimeoutError: xxx.xx.xx.xx:27017: [Errno 111] 接続が拒否されました

これは aws で mongo db を使用する正しい方法ではありませんか? このアプローチが実行可能な場合、接続が発生しない原因は何ですか?

すべての入力に感謝します。

0 投票する
1 に答える
4001 参照

flask - フラスコ/モンゴエンジン ドキュメントにカスタム id フィールドを追加する

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

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

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

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

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

0 投票する
1 に答える
956 参照

mongodb - mongoengine.EmbeddedDocument クラスで save メソッドを呼び出す方法

Model1インスタンスを保存するとき。save メソッドを呼び出さない

Model2 で save メソッドを明示的に呼び出そうとすると、NoneType object has no attr save