2
私はこのようなモデル持って検証SQLAlchemyの関係は
widget = Widget(obj_id=5)
validate_obj_id
が起動しますが、しかしvalidate_obj
はしません。 を検索してvalidate_obj_id
にしてオブジェクトをvalidate_obj
に渡すのではなく、両方のフィールドを1つの関数で検証する方法はありますか?
私はこのようなモデル持って検証SQLAlchemyの関係は
widget = Widget(obj_id=5)
validate_obj_id
が起動しますが、しかしvalidate_obj
はしません。 を検索してvalidate_obj_id
にしてオブジェクトをvalidate_obj
に渡すのではなく、両方のフィールドを1つの関数で検証する方法はありますか?
あなたは「セット」イベントを使用することができます。
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
パフォーマンスが問題でない限り、私は個人的にこそ二つのフィールドを扱うのtrickinessの、代わりに常に外部キーの関係に動作することを好みますこれはデータベースの同じ列に影響を与えますが、Pythonでは個別に管理されます。 – univerio
それは良い点です。私はいくつかの奇妙なことを行ういくつかのレガシーコードを含めてこれを部分的に実装しようとしています。私はすべてのobj_id設定をobjに更新したいとは思っていません。 – Plasma