为什么flask-admin要求mongoengine的ListField具有字段类型?

Ore*_*nik 5 python flask flask-admin

我正在尝试使用flask-admin,这看起来非常简单,但我有一个问题.

我在集合中有一个字段,定义为a ListField(),具有None列表字段类型的隐式类型.我没有为该字段定义类型的原因是因为我保留了一个列表列表,并且没有其他优雅的方式(我发现)用mongoengine来实现这一点.

但是flask-admin不会让我定义这样一个字段,错误是ListField "movements" must have field specified for model.

有没有解决的办法?

Abd*_*iJK 1

Flask admin 需要指定一个字段的原因是,否则表单渲染不知道要显示哪种类型的输入。

例如,如果它是选择字段、日期字段或其他列表字段本身!

你可以这样做:

my_field = db.ListField(field=db.ListField(field=db.StringField()))
Run Code Online (Sandbox Code Playgroud)

最里面的字段可以是任何内容,包括 EmbeddedDocumentField 或 IntField 等。

另外,如果您想继续使用ListField而不指定字段类型,您还可以要求 Flask-admin 通过覆盖将其视为字符串ModelView,然后它只会为您提供一个包含该字符串的文本框:

[ 'a value', 42, { 'A':'B' } ]
Run Code Online (Sandbox Code Playgroud)

因此,这保留了灵活性,但减少了结构并使验证变得糟糕。