5

背景:django-hvadTranslatableModel. そのTranslatedFields中に、モデルの保存中に属性をslug使用して自動的に作成される属性があります。title

問題:TranslatedFieldsインスタンスの保存中にいずれかの値を設定するのが困難です。save_translations機能する解決策は、次のように my のメソッドをオーバーライドすることTranslatableModelです。最後から 2 番目の行のみが元の行と異なります。

    @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()

このソリューションは、コピーと貼り付けを利用するため、適切ではありません。同じことを達成するためのより良い方法はありますか?

4

2 に答える 2

0

django-hvad 1.5.0 を使用。

ユースケース: Django Admin の外部で TranslatableModel フィールドの値を設定します。

# self is a TranslatableModel instance with `translations`
# this first line will initialize the cache if necessary
slug = self.lazy_translation_getter('slug')
translation = get_cached_translation(self)
translation.master = self
translation.slug = defaultfilters.slugify(self.title)  # whatever value
translation.save()
于 2016-04-28T16:14:14.870 に答える