2014-03-03 50 views
5

我正在嘗試使用flask-admin,這看起來非常容易,但是我遇到了問題。爲什麼flask-admin需要mongoengine的ListField有一個字段類型?

我在集合中有一個字段,它定義爲ListField(),列表字段類型的隱式類型爲None。我沒有爲該領域定義類型的原因是因爲我保留了一個列表列表,並且沒有其他優雅的方式(我發現)可以通過mongoengine完成此操作。

但flask-admin不會讓我定義這樣的字段,錯誤爲ListField "movements" must have field specified for model

有沒有辦法解決這個問題?

+0

您有可能粘貼一些代碼並向我們展示您在mongoengine上使用的版本嗎? – AlexLordThorsen

+0

db.ListField(field = db.ListField()) –

回答

1

原因瓶子管理員需要指定的字段是因爲否則表單呈現不知道顯示哪種類型的輸入。

例如,如果它是選擇字段,日期字段或其他列表字段本身!

你可以做這樣的事情:

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

最裏面的字段可以是任何東西,包括一個EmbeddedDocumentField或IntField等

另外,如果你想繼續使用ListField不指定領域你也可以通過覆蓋ModelView來讓flask-admin把它當作一個字符串來處理,然後它會給你一個包含字符串的文本框:

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

所以這保留了靈活性,但是減少了結構並且使驗證不好。

+0

模型視圖(...'form_overrides = {'movements':StringField}'...)是一個很好的解決方法 – zm0

相關問題