6

私はフラスコ管理者を使用しようとしていますが、これは素晴らしく簡単に思えますが、問題があります。

コレクション内に として定義されたフィールドがあり、リスト フィールド タイプListField()の暗黙的なタイプはです。Noneフィールドのタイプを定義していない理由は、リストのリストを保持しているためであり、mongoengine でこれを達成するためのエレガントな方法 (私が見つけた) が他にないからです。

しかし、flask-admin では、そのようなフィールドを定義できません。エラーが発生しますListField "movements" must have field specified for model

これを回避する方法はありますか?

4

1 に答える 1

1

フラスコ管理者が指定されたフィールドを必要とする理由は、それ以外の場合、フォームのレンダリングが表示する入力のタイプを認識できないためです。

たとえば、それが選択フィールド、日付フィールド、または別のリスト フィールド自体の場合です。

次のようなことができます。

my_field = db.ListField(field=db.ListField(field=db.StringField()))

最も内側のフィールドは、EmbeddedDocumentField や IntField など、何でもかまいません。

また、フィールド タイプを指定せずに使用を続けたい場合はListField、flask-admin に をオーバーライドしてこれを文字列として扱うように依頼することもできます。そうすれModelViewば、文字列を含むテキスト ボックスが表示されます。

[ 'a value', 42, { 'A':'B' } ]

したがって、これは柔軟性を保持しますが、構造を減らし、検証を悪くします。

于 2016-01-08T08:21:47.577 に答える