2014-01-15 7 views
10

前提条件:
特にPythonとFlask-Adminの方が新しいです。私はMondoDBを持つシンプルなテストサービスを作成し、データを「一対一」の関係で保ちました。編集ビューからFlask-AdminのSubmitメソッドをカスタマイズ(オーバーライド)

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

そして、私はデータを持つテーブルを観察し、それを編集するためにフラスコ-Admin]を使用します -

employeeName>給与は

モデルはそのように見えます。 私は 'salary'フィールドを変更したいときは、 'edit'ボタンを押してFlask-Adminのデフォルト編集ビューで整数値を変更します。私は 'Submit'を押すと、データベースの新しい値が正常に適用されます。

質問:
しかし、私はそれは機能性といくつかのカスタムコードを追加しているよう去る方法で、Submitメソッドをオーバーライドする必要があります。同様に、実際のDBを提出した後の私は、ログファイルにコメントを追加したいとしましょう:

logging.warning(:、のfullName、給与「%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であることがわかりました。

私の場合、私はJoesの答えが良いと思います。私はそれをもっと好む。on_model_change私がAdminウェブページを通してデータベースを編集する場合、私は私のカスタムコードを呼び出す。それぞれプログラムによるのデータベース操作(saveupdateなど)は、ネイティブコードを使用して動作します。これはまさに私が望むものです。 saveメソッドをオーバーライドすると、の操作がすべて管理されます。これは、管理領域によって開始されたのか、サーバーエンジンによってプログラムによって開始されたのかに関係なく処理されます。

解決済み、ありがとうございました!

+0

ありがとうございます。それは私にとって非常に役に立ちます。 –

+0

@AlisonS喜んでそれは助けた。あなたは大歓迎です、アリソン) – makaron

関連する問題