2013-06-25 80 views
1

我有小問題:簡單的類瓶管理員和預填充值

class AModel(db.Model): 
    id = db.Column(....) 
    title = db.Column(....) 
    uniq_text_id = db.Column(db.String(50), unique=True. nullable=False) 

def __init__(self): 
    uniq_text_id = uuid4().hex 

現在我調整燒瓶管理員包,什麼管理員能夠創建AModel實例。但有一種情況:必須自動創建字段uniq_text_id

因此,現在我無法創建模式,因爲flask-admin在必填欄中顯示的是uniq_text_id,但也未顯示預填充的值。

有沒有什麼辦法可以在flask-admin表單中使用prepopulated的值,或者避免以某種方式解決這個問題而不會影響nullable=False約束?

UPD: @codegeek爲仍然顯示在窗體上的自動生成的字段提供了很好的解決方案。我自己的解決方案使用由flask-admin功能提供,允許顯式聲明顯示哪些列和哪些 - 隱藏。

回答

3

您需要爲您的模型重寫ModelView類。喜歡的東西:

class AModelAdmin(sqlamodel.ModelView): 

    uuidtext = uuid4() 
    form_args = dict(
       uniq_text_id=dict(default=uuidtext) 
      ) 

    def __init__(self, session): 
     super(AModelAdmin, self).__init__(AModel, session) 

然後你只需要添加到您的管理員

admin.add_view(AModelAdmin(db.session)) 
+0

哇,謝謝你的另一種解決方案! –

0

這是我的錯 - 閱讀文檔太簡單。創建我的模型視圖,如fillowing:

class MyUserLessonModelView(MyModelView): 
    form_excluded_columns = ('uniq_text_id', 'created_by', 'created_date', 'modified_by', 'modified_date') 

並且所有自動生成的字段都從窗體中消失。

+0

你最終找到了解決辦法嗎? – Orny