【发布时间】:2018-09-24 02:07:08
【问题描述】:
我正在尝试使用 Django-ModelTranslation (0.12.2) 为 Django-Oscar (1.5.2) 中的产品提供翻译字段。它使用 Django 1.10.8。我关注了Registering Models for Translation 上的文档,但一直收到以下回复:No new translatable fields detected。
我不知道这是否是问题的一部分,但我首先启动了 Mezzanine (4.2.3) 项目,然后使用 Oscar 的 docs 将 Oscar 集成到其中。翻译字段被完美地添加到夹层中。 (编辑:将带有 ModelTranslation 的 Oscar 添加到一个新的 Django 项目中,同样的响应,所以它不是 Mezzanine。)
下面,我展示了我如何分叉 Oscar 的目录应用并将其添加到 settings.py。
project/settings.py:
from oscar import get_core_apps
# Django-ModelTranslation settings
USE_MODELTRANSLATION = True
MODELTRANSLATION_FALLBACK_LANGUAGES = ('en',)
LANGUAGES = (
('en', _('English')),
('de', _('German')),
)
INSTALLED_APPS = [
...,
] + get_core_apps(['forked_apps.catalogue'])
project/forked_apps/catalogue/translation.py:
from modeltranslation.translator import translator, TranslationOptions
from oscar.apps.catalogue.abstract_models import AbstractProduct
class AbstractProductTranslationOptions(TranslationOptions):
fields = ('title', 'description',)
translator.register(AbstractProduct, AbstractProductTranslationOptions)
然后我运行sync_translation_fields 无济于事。我错过了什么?
【问题讨论】:
-
我认为问题在于没有将您的分叉 oscar 应用程序直接安装在已安装的应用程序下(不确定 oscar 是否允许 / 可以很好地使用它)。不确定如何解决它。
-
@AshishNitinPatil 原来,这是因为 ModelTranslation 会查找
abstract=False的模型,而 AbstractProduct 有True的模型。我把它写在解决方案中。但感谢您与我们联系。
标签: python django mezzanine django-oscar django-modeltranslation