那麼,我最近接近flask-admin,我無法弄清楚如何解決這個問題。我知道我可以使用form_choices
通過指定元組列表來限制文本字段的可能值。無論如何,form_choices
允許一次只選擇一個值。我如何指定在某些情況下,我可能需要用逗號分隔的值列表?燒瓶管理員form_choices中的多個選擇
我嘗試以下解決方法:
form_args = {
'FIELD': {
'render_kw': {"multiple": "multiple"},
}
}
但是,即使多選輸入網頁上實際上出現,只有第一個值將被保存。
EIDT 2017年5月13日
通過打了一下,用燒瓶管理員,我發現我的問題的兩種可能(partial-)解決方案,它們都具有特定的缺點。
1)配合使用的Select2TagsField
from flask_admin.form.fields import Select2TagsField
...
form_extra_fields = {
'muri': Select2TagsField()
}
用這種方法的第一筆交易是有可能輕鬆地實現選擇菜單正常輸入文本,即使在目前,我不知道如何選擇傳遞給Select2TagsField。它可以很好地作爲一種多重自由文本輸入。然而,據我所知,它是不可能配對Select2TagsField和form_choices
2)第二個是有點長,但它提供了一些更多的代碼控制(至少我假設)。 不過它意味着使用的form_choices
,但on_model_change
form_args = {
'FIELD': {
'render_kw': {"multiple": "multiple"},
}
}
form_choices = {'FIELD': [
('1', 'M1'), ('2', 'M2'), ('3', 'M3'), ('4', 'M4')
]}
...
def on_model_change(self, form, model, is_created):
if len(form.FIELD.raw_data) > 1:
model.FIELD = ','.join(form.FIELD.raw_data)
該解決方案這一次配對,儘管前者,允許繪製的選擇和行之有效的將數據添加到模型時,但在編輯它提供了一些問題。任何時候我打開編輯對話框時,FIELD都是空的。如果我查看發送到表單的數據(使用on_form_prefill
通過打印form.FIELD.data
),我會在終端中獲取逗號分隔的字符串,但網頁上的相關選擇字段中不會顯示任何內容。
感謝MrLeeh,無懷疑)。我知道所提出的方法確實不是非常正統的,但是,因爲在我的模型中有很多情況,比如上面提到的那個(但是,必須很少使用的情況),我想知道是否有一些方法可以繼承它們N:M關係的行爲而不交替模型。我在想一個以逗號分隔的字符串列表,但我不知道如何用flask-admin指定這個列表 – Pankus