问题标签 [django-modeltranslation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
168 浏览

django - Django 模型上的反射/查找找不到国际化(阴影)字段

我使用一个 CMS,它在运行时通过 API 对我的模型进行映射。

它工作正常,除了本地化字段,因为我使用https://django-modeltranslation.readthedocs.io/en/latest/registration.html添加明显未映射的“影子”字段(它们不存在于模型本身,但通过“注册”添加)

有什么方法可以告诉我的模型它拥有这些字段?它可以找到该label字段,但错过了在运行时动态添加的label_fr和。label_en

这是translation.py

我使用https://github.com/jet-admin/jet-django,我注意到/model_descriptions端点的响应只返回该label字段。

我怀疑这是调用端点时调用的代码https://github.com/jet-admin/jet-django/blob/94b0bb1451e768c7c3b6dadf9830d982914fe6c9/jet_django/views/model_description.py#L12

基本上,我已经安装了django-modeltranslation应用jet-django程序,后者提供了一个由JET Admin UI使用并用于进行模型查找的 API。

我不知道我的问题是否必须在 jet-django 本身中解决,或者 django 是否为类似的影子字段提供了一个功能。

0 投票
1 回答
605 浏览

django - 默认语言值覆盖管理员中的翻译字段

我正在为多语言站点(英语(默认)、阿拉伯语、法语)使用 Django 模型翻译,问题是在 django admin 默认中保存数据时会覆盖阿拉伯语和法语翻译字段。但在数据库中实际值呈现。

我的模型:plan/models.py

计划/翻译.py:

计划/admin.py:

设置.py:

下面是数据库值

但是在 Admin 中,所有字段都只有 English 的 operator 值。有人可以告诉我我哪里出错了吗?我尝试了 updte_translation_fields 和 sync_translation_fields 但没有帮助

0 投票
1 回答
1015 浏览

django - Django Rest Framework 中的模型翻译

我正在使用 Django Rest Framework 开发一个 API,并且我需要一些具有一些字段的模型,这些字段应该支持多种语言的翻译,然后,当然,序列化程序应该必须使用预期的语言检索该字段。我考虑了两个选项:向模型添加额外字段(一个字段用于语言)或创建另一个模型,其中包含每种语言的所有文本。另一方面,我看到有一些库(例如 django-modeltranslation)旨在解决该问题,但是,我想知道一些关于它们的意见。你怎么看?你会向我推荐什么?

非常感谢

0 投票
1 回答
708 浏览

django - 您如何翻译页面的 slug 值?

我正在尝试实现一个语言切换器,为此我使用了 Django 推荐的表单:

我的 urls.py 设置如下:

当我单击更改我的语言时,我会正确转发到/en/sluges/slug,具体取决于我选择的语言。但是,实际的 slug 值没有被转换。因为我有西班牙语页面的西班牙语 slug,所以当我切换语言时,我会得到 404,因为我被定向到与西班牙语言环境前缀 ( es) 配对的英语 slug 值。

我也尝试使用slugurl_trans模板标签,但这似乎不起作用(可能是因为我没有在i18n_patterns调用中明确定义任何 URL?)。

任何有关这方面的指导都会非常有帮助,因为我在这方面花了太多时间!

0 投票
1 回答
470 浏览

python - 使用 django-modeltranslation 的语言无关查询

我目前开始在 Django 应用程序中使用 django-modeltranslation,并且我想进行查询以检索模型的实例,而与系统中设置的语言无关。例如我有以下模型:

以及 translation.py 中的以下内容:

和 Django 设置:

让我们创建一个产品实例:

现在我想找到带有 sku 的实例sku-002,以检索产品的价格(与语言无关)。

但是,这会返回一个空的MultilingualQuerySet. 只有以下内容返回正确的 Product 实例。

或者

我想这是 django-modeltranslation 的预期行为,但有时找到一个独立于语言的实例是可行的。

一个解决方案可能是遍历所有LANGUAGES语言并尝试找到每种语言的实例:

然而,这不是很实用,特别是对于现有的应用程序,其中代码需要在多个地方进行调整。有没有办法直接使用查询集管理器来检索独立于语言的实例?

0 投票
1 回答
427 浏览

python - 您应该如何处理使用 django-modeltranslation 翻译的原始字段?

我在 settings.py 中指定了模型字段应该可用的语言:

但是当我应用迁移时,这意味着除了原始字段之外,它将创建这三个额外的字段。如果原来的字段是“name”,我现在将有“​​name”、“name_en”、“name_zh_cn”和“name_zh_tw”。

应该如何处理原始字段?忽略它?删除它?我应该不把英文放在LANGUAGES中,把原文当作英文翻译吗?

当我在他们的 Github 页面上寻找解决方案时,有人说您可以将默认设置为您想要的语言,而不是将其包含在您的 TRANSLATIONMODEL_LANGUAGES 中,https://github.com/deschler/django-modeltranslation/issues/488 #issuecomment-457427502但这不是真的(至少对于最新版本的翻译模型),因为它会给你一个django.core.exceptions.ImproperlyConfigured: MODELTRANSLATION_DEFAULT_LANGUAGE not in LANGUAGES setting.错误。

0 投票
2 回答
870 浏览

python - 对于在 Django 中使用 modeltranslation 翻译的字段,如何在 upload_to 方法中获取 FileField 的字段名?

我在 FileField 上使用 django 模型翻译。

我希望将此文件上传到路径中/path/to/file/<lang>/file.ext,我想最好的方法是从正在运行的字段名(file_en,file_it,file_fr,...)中提取语言upload_to

0 投票
1 回答
97 浏览

python - Wagtail-ModelTranslation 模板片段缓存

我已经使用 wagtail 和 wagtail-modeltranslation 实现了一个多语言站点,但是我遇到了模板片段缓存的问题。缓存有效,但不尊重单独的语言。保存后首先访问的语言将适用于所有语言。我尝试了两种设置缓存键的方法都无济于事。首先来自django 文档,其次尝试在模板中显式包含语言代码

第一的:

二:使用简单的模板标签

我的保存方法如下:

无论不包括任何与语言相关的参数,这都会清除正确的片段

任何帮助将不胜感激。谢谢!

0 投票
0 回答
235 浏览

python - django-modeltranslation - Django 模型 get() SQL SELECT 不获取已翻译的字段

我使用 django-modeltranslation 将一些模型字段翻译成荷兰语 (nl) 和法语 (fr)。

现在,除了一个模型之外,一切都运行良好:

在数据库中,我可以看到三个字段及其翻译的等价物:title、title_nl、title_fr、name、name_nl、name_fr、description、description_nl 和 description_fr。当我在 django admin 或 shell 中更新这些翻译的字段时,它们被正确保存。当我从数据库中获取这些数据时,就会出现问题。因此,如果我使用 , 获取此数据Association.objects.all()Association.objects.get(id=1)或者只是在 django 管理详细信息视图中查看它,我会看到每个已翻译字段的默认数据。当我检查 Django 执行的 SQL 查询时,我看到了这个奇怪的查询:

如您所见,有 3 次title、3 次name和 3 次description没有语言后缀

因此,对于更新此模型,django-modeltranslation 效果很好,但对于从数据库中获取已翻译的数据,它不适用于我创建的模型之一:

有人可以帮我解决这个错误。我已经看了好几天了。我以为我会在某个地方打错字,但找不到错字。我还尝试删除这些字段,再次添加它们,再次使用 , 同步数据库./manage.py makemigrations./manage.py migrate但仍然没有成功。./manage.py update_translation_fields./manage.py sync_translation_fields

我正在使用 python 版本 3.5.2、Django 版本 2.1.7 和 django-modeltranslation 版本 0.14.4

0 投票
0 回答
431 浏览

django - 如何为带有翻译的 django rest 框架模型创建自定义序列化程序

我正在使用 django-rest-framework,并且我有一个模型“TextElement”,其属性“text”是使用 django-modeltranslation 翻译的。我需要创建一个通用序列化程序,它接受翻译的字段并作为数据返回一个字典,其中语言作为键,翻译后的属性作为值。例子:

我可以使用以下序列化程序来做到这一点:

但我想知道是否可以创建一个通用序列化程序,自动检查“字段”中的所有翻译属性,使用 settings.LANGUAGES 中的可用语言并返回相同的数据结构。

提前致谢!