Arka plan:django-hvad
kullanıyorum ve TranslatableModel
ürününe sahibim. TranslatedFields
modelinde, slug
özniteliğimde, model kaydedilirken title
özniteliği kullanılarak otomatik olarak oluşturulmalıdır.django-hvad - Model örneğini kaydederken çevrilmiş alan değerini nasıl ayarlamalıyım?
Sorun: Örneği kaydederken TranslatedFields
'un değerini ayarlamak zordur. Çalıştığı bir çözüm, TranslatableModel
'un save_translations
yöntemini aşağıdaki gibi geçersiz kılmaktır. Sadece ikinci son satırı orijinal farklıdır: kopyalama ve yapıştırma kullanır çünkü
@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()
Bu çözüm, hoş değil. Aynı şeyi başarmanın daha iyi bir yolu var mı?
sayesinde bu hat Hvad yönetici arayüzü kaydedilemeyecek nesneyi zorlar Haystack ve hvad arasında bir uyumsuzluk tespit ve Haystack indeksi çalışır hemen, çeviriler yazılır önce. 'Self.lazy_translation_getter ('title')' kullanarak değeri hazırlamak, benim için çalışmasını sağladı. – qris