我的django应用程序也必须是可翻译的静态页面和模型。对于翻译模型我正在使用django-parler app。这很好,但对于简单模型,我的意思是,模型不是从抽象模型类继承的。
假设我们有一个车辆抽象模型
class Vehicle(TranslatableModel):
translations = TranslatedFields(
description=models.CharField(max_length=100)
)
class Meta:
abstract = True
和一个儿童模特是Car:
class Car(Vehicle)
"""..."""
这引发了我的错误: TypeError:无法为抽象类Vehicle创建TranslatedFieldsModel 。
我还想使用django模型继承。那么,我可以做什么来使用django-parler翻译我的模型,它支持抽象模型的翻译,或者我需要使用另一个应用程序来实现这一点,在这种情况下是否有任何建议?
答案 0 :(得分:0)
问题是,parler隐式地为翻译创建了一个额外的db表,该表具有ForeignKey
模型,用于声明翻译的字段。您不能将FK用于抽象模型,因为它没有自己的db表。如果你有两个模型继承这个抽象模型怎么办?哪个表是FK指向的翻译表?
如果您想在模型之间共享相同的可翻译字段并且仍然相对干燥,您可以尝试在模型之外实现可翻译字段:
vehicle_translations = TranslatedFields(
description=models.CharField(max_length=100)
)
class Car(TranslatableModel):
translations = vehicle_translations
答案 1 :(得分:0)
最好的解决方案是按照文档https://django-parler.readthedocs.io/en/latest/api/parler.fields.html#the-translatedfield-class
中的说明使用TranslatedField