背景:私はdjango-hvad
を使用し、TranslatableModel
を持っています。そのTranslatedFields
にはslug
属性があります。この属性は、モデルを保存するときにtitle
属性を使用して自動的に作成される必要があります。django-hvad - モデルインスタンスを保存する際に変換されたフィールド値を設定する方法は?
問題:インスタンスを保存中にTranslatedFields
のいずれかの値を設定することは困難です。解決策は、TranslatableModel
のsave_translations
メソッドを次のようにオーバーライドすることです。唯一の最後から二番目の行は、オリジナルとは異なり:それはコピー&ペーストを使用していますので、
@classmethod
def save_translations(cls, instance, **kwargs):
"""
The following is copied an pasted from the TranslatableModel class.
"""
opts = cls._meta
if hasattr(instance, opts.translations_cache):
trans = getattr(instance, opts.translations_cache)
if not trans.master_id:
trans.master = instance
# The following line is different from the original.
trans.slug = defaultfilters.slugify(trans.title)
trans.save()
このソリューションは、素敵ではありません。同じことを達成するより良い方法はありますか?
おかげで、この行はHvadは、管理インターフェイスに保存するオブジェクトを強制的に、そして翻訳が書き込まれる前にヘイスタックは、すぐにインデックスにそれをしようとヘイスタックとHvad間の非互換性を、固定。 'self.lazy_translation_getter( 'title')'を使って値を準備することは、私にとってはうまくいきました。 – qris