0

put()私は、Google アプリ エンジン用のスパム フィルター ライブラリを作成しています。これは、アプリ エンジン フックを使用して、データストアに入る直前に一部のデータを変更します。そのために、PolyModel クラスをサブクラス化するモデルを作成しました。このクラスをチェック可能にしたい場合は、サブクラス化する必要があります。

しかし、クラス内の一部のデータについては、値が変更されたときにいくつかのことをしたいと思います。そのためには、上書きする必要があります__setitem__。しかし、sdk はこれを使用してモデルのプロパティの変更を決定したり、フィルターを適用したりするため、上書きを変更するとこれ__setitem__が壊れる可能性があると思います。これを回避する最善の方法は何ですか?

4

2 に答える 2

2

親メソッドを。で呼び出すことを忘れない限り、メソッドをオーバーライドしても危険はありませんsuper。しかし、あなたの場合__setitem__は間違った場所です。インスタンスが作成されるたびに、すでにクリーンアップされた値から作成されている場合でも、スパムからクリーンアップされるためです。

あなたがそれを明示的に行う場合、何が問題になりますか?

filter_out_spam(obj)
obj.put()
于 2011-12-19T23:52:22.570 に答える
2

変更しないでください__setitem__- 代わりに、必要なことを行うカスタム プロパティ クラスを記述します。

putエンティティも で保存できるため、レコードが配置される前に何かをしたい場合は、モデルをオーバーライドすることはできないことに注意してdb.putください。可能であれば、関連するコードをプロパティ クラスに移動して、この必要性を回避する必要があります。

于 2011-12-20T02:57:23.090 に答える