我的django应用程序必须是可翻译的,静态页面和模型。为了翻译模型,我使用django-parler应用程序。这很好,但是对于简单的模型,我的意思是,不是从抽象模型类继承的模型。
假设我们有一个车辆抽象模型
class Vehicle(TranslatableModel):
translations = TranslatedFields(
description=models.CharField(max_length=100)
)
class Meta:
abstract = True和一个儿童模型,也就是汽车:
class Car(Vehicle)
"""..."""这给我带来了一个错误:TypeError:无法为抽象类Vehicle创建TranslatedFieldsModel。
我仍然想使用django模型继承。那么,我能做些什么来用django-parler来翻译我的模型呢?它支持抽象模型的翻译,或者我需要使用另一个应用程序来实现这一点,在这种情况下,任何建议都可以吗?
发布于 2017-10-30 18:23:50
问题是,parler隐式地为转换创建了一个额外的db表,该表具有一个ForeignKey,用于声明转换字段的模型。不能将FK转换为抽象模型,因为它没有自己的db表。如果有两个模型子类这个抽象模型呢?翻译表的FK指向哪个表?
如果您想在模型之间共享相同的可转换字段,并且仍然比较枯燥,您可以尝试在模型之外实现可翻译字段:
vehicle_translations = TranslatedFields(
description=models.CharField(max_length=100)
)
class Car(TranslatableModel):
translations = vehicle_translations发布于 2019-05-08 16:27:08
最好的解决方案是使用TranslatedField,如docs:https://django-parler.readthedocs.io/en/latest/api/parler.fields.html#the-translatedfield-class中所解释的那样
https://stackoverflow.com/questions/47021646
复制相似问题