エンティティ コンテンツの i18n のサポートを実装する必要があります。リファクタリング前のコードは次のようになります。
class Project (db.Model)
description = db.TextProperty()
description プロパティを取得または設定するすべてのコードのリファクタリングを避けるために、@property ビルトインを使用して i18n を実装します。
class Project (db.Model)
# English
description_en = db.TextProperty()
# Spanish
description_es = db.TextProperty()
@property
def description(self):
return self.description_es
@description.setter
def description(self, value):
self.description_es = value
これをやろうとすると問題が発生しました:
project = Project(description = "Foo bar")
私はその構文を使用して、大規模なコードベースでモデルを初期化しますが、それをリファクタリングすることはできません。しかし、db.Model initは db.propertiesのみを設定し、@properties は設定しません。
db.Model の init メソッドをオーバーライドしようとしましたが、多くのエラーが発生し、推奨されていないようです。
私の質問は次のとおりです。
の init メソッドを安全にオーバーライドする方法はありdb.Model
ますか?
私のコードの大規模なリファクタリングを意味しない、コンテンツの i18n を実装する他の方法はありますか?