首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-抽象模型的parler翻译

django-抽象模型的parler翻译
EN

Stack Overflow用户
提问于 2017-10-30 18:09:25
回答 2查看 1.3K关注 0票数 3

我的django应用程序必须是可翻译的,静态页面和模型。为了翻译模型,我使用django-parler应用程序。这很好,但是对于简单的模型,我的意思是,不是从抽象模型类继承的模型。

假设我们有一个车辆抽象模型

代码语言:javascript
复制
class Vehicle(TranslatableModel):

    translations = TranslatedFields(
        description=models.CharField(max_length=100)
    )

    class Meta:
        abstract = True

和一个儿童模型,也就是汽车:

代码语言:javascript
复制
class Car(Vehicle)
    """..."""

这给我带来了一个错误:TypeError:无法为抽象类Vehicle创建TranslatedFieldsModel。

我仍然想使用django模型继承。那么,我能做些什么来用django-parler来翻译我的模型呢?它支持抽象模型的翻译,或者我需要使用另一个应用程序来实现这一点,在这种情况下,任何建议都可以吗?

EN

回答 2

Stack Overflow用户

发布于 2017-10-30 18:23:50

问题是,parler隐式地为转换创建了一个额外的db表,该表具有一个ForeignKey,用于声明转换字段的模型。不能将FK转换为抽象模型,因为它没有自己的db表。如果有两个模型子类这个抽象模型呢?翻译表的FK指向哪个表?

如果您想在模型之间共享相同的可转换字段,并且仍然比较枯燥,您可以尝试在模型之外实现可翻译字段:

代码语言:javascript
复制
vehicle_translations = TranslatedFields(
    description=models.CharField(max_length=100)
)

class Car(TranslatableModel):
    translations = vehicle_translations
票数 0
EN

Stack Overflow用户

发布于 2019-05-08 16:27:08

最好的解决方案是使用TranslatedField,如docs:https://django-parler.readthedocs.io/en/latest/api/parler.fields.html#the-translatedfield-class中所解释的那样

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47021646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档