背景:我使用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