Bối cảnh: Tôi sử dụng django-hvad
và có TranslatableModel
. Trong số TranslatedFields
Tôi có thuộc tính slug
cần được tạo tự động bằng thuộc tính title
khi lưu mô hình.django-hvad - làm cách nào để tôi đặt giá trị trường đã dịch trong khi lưu một phiên bản mẫu?
Sự cố: Rất khó đặt giá trị của một trong số TranslatedFields
trong khi lưu phiên bản. Giải pháp hoạt động là ghi đè phương pháp save_translations
của số TranslatableModel
như sau. Chỉ dòng cuối cùng thứ hai khác với dòng gốc thứ hai:
@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()
Giải pháp này không tốt, vì nó sử dụng sao chép và dán. Có cách nào tốt hơn để đạt được điều tương tự không?
Cảm ơn, dòng này đã khắc phục sự không tương thích giữa Haystack và Hvad, nơi Hvad buộc đối tượng phải được lưu trong giao diện quản trị và Haystack cố lập chỉ mục ngay lập tức trước khi dịch được viết. Chuẩn bị giá trị bằng cách sử dụng 'self.lazy_translation_getter ('title')' làm cho nó hoạt động cho tôi. – qris