Sfondo: Io uso django-hvad
e ho un TranslatableModel
. Nel suo TranslatedFields
ho un attributo slug
che dovrebbe essere creato automaticamente usando l'attributo title
durante il salvataggio del modello.django-hvad - come devo impostare un valore di campo tradotto mentre si salva un'istanza di modello?
Problema: È difficile impostare il valore di uno degli TranslatedFields
durante il salvataggio dell'istanza. Una soluzione che funziona è ignorare il metodo save_translations
del mio TranslatableModel
come segue. Solo la seconda ultima riga è diversa dall'originale:
@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()
Questa soluzione non è bello, perché fa uso di copia e incolla. C'è un modo migliore per ottenere lo stesso?
Grazie, questa linea fissa un'incompatibilità tra pagliaio e Hvad, dove Hvad costringe l'oggetto da salvare nella interfaccia di amministrazione, e Haystack cerca di indicizzare immediatamente, prima che le traduzioni sono scritti. Preparare il valore usando 'self.lazy_translation_getter ('title')' ha funzionato per me. – qris