2016-07-19 5 views
2

私はこのようなモデル持って検証SQLAlchemyの関係は

widget = Widget(obj_id=5) 

validate_obj_idが起動しますが、しかしvalidate_objはしません。 を検索してvalidate_obj_idにしてオブジェクトをvalidate_objに渡すのではなく、両方のフィールドを1つの関数で検証する方法はありますか?

+0

パフォーマンスが問題でない限り、私は個人的にこそ二つのフィールドを扱うのtrickinessの、代わりに常に外部キーの関係に動作することを好みますこれはデータベースの同じ列に影響を与えますが、Pythonでは個別に管理されます。 – univerio

+0

それは良い点です。私はいくつかの奇妙なことを行ういくつかのレガシーコードを含めてこれを部分的に実装しようとしています。私はすべてのobj_id設定をobjに更新したいとは思っていません。 – Plasma

答えて

3

あなたは「セット」イベントを使用することができます。

from sqlalchemy import event 

@event.listens_for(Widget.obj, 'set', retval=True) 
def validate_obj(target, value, oldvalue, initiator): 
    print('event fired for validate_obj') 
    return value