2

エンティティ コンテンツの 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 を実装する他の方法はありますか?

4

0 に答える 0