2014-01-15 85 views
10

前提條件:
我是Python新手,特別是Flask-Admin。我創建了一個簡單的測試服務,它有MondoDB,保持數據的關係爲'一對一'。自定義(覆蓋)Flask-Admin的編輯視圖提交方法

employeeName - >工資

這個模型看起來像這樣:

class Employee(db.Document): 
    fullName = db.StringField(max_length=160, unique=True) 
    salary = db.IntField() 

而且我用的燒瓶管理與數據,觀察表,並對其進行編輯。 當我想更改「工資」字段時,我只需按下'編輯'按鈕並在Flask-Admin的默認編輯視圖中更改整數值。我按'提交',數據庫中的新值成功應用。

問:
但我需要覆蓋的方式,提交方法,離開,因爲它是功能和增加一些自定義代碼。就像假設我要添加日誌文件的註釋實際分貝後提交:

logging.warning(「%S的薪水:改爲/%s」的,全名,薪水)

任何有關如何實現這一點的建議將不勝感激。也許你可以指引我走,因爲Flask-Admin文檔到目前爲止沒有給我足夠的幫助。

回答

1

我最終覆蓋了我的文檔派生類中的save方法。 所以現在我員工類包含了這種代碼:

def save(self, *args, **kwargs): 
    print 'whatever I want to do myself is here' 
    return super(Employee, self).save(*args, **kwargs) 

今天我發現,這種解決方案實際上是沒有什麼新的,是described on StackOverflow

但對於我的具體情況,我認爲喬斯的回答更好。我更喜歡它,因爲如果我覆蓋on_model_change我只調用我的自定義代碼如果我通過管理員網頁編輯數據庫;和每個編程數據庫上的操作(如save,update)將使用本機代碼工作 - 這正是我想要的。如果我重寫save方法,我將自己處理每個保存操作,無論它是由Admin區域啓動還是由服務器引擎以編程方式啓動。

解決了,謝謝!

+0

感謝您的補充。這對我很有幫助。 –

+0

@AlisonS很高興幫助。不客氣,艾莉森) – makaron