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

时间:2019-03-07 16:04:34

标签: django django-modeltranslation jet-django

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

除本地化字段外,它工作正常,因为我使用https://django-modeltranslation.readthedocs.io/en/latest/registration.html来添加显然没有映射的“阴影”字段(它们不存在于模型本身,而是通过“寄存器”添加的)< / p>

有什么办法可以告诉我的模型它拥有那些字段吗? 它可以找到label字段,但是错过了在运行时动态添加的label_frlabel_en

这里是translation.py

from modeltranslation.translator import translator, TranslationOptions

from tfp_backoffice.apps.org.models import Org


class OrgTranslationOptions(TranslationOptions):
  """
  See https://django-modeltranslation.readthedocs.io/en/latest/registration.html
  """
  fields = ('label',)
  required_languages = ('fr',)  # ex: {'de': ('title', 'text'), 'default': ('title',)}


translator.register(Org, OrgTranslationOptions)

我使用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-modeltranslationjet-django应用程序,后者则提供了JET Admin UI使用的API,用于进行模型查找。

我不知道我的问题是否必须在jet-django本身中解决,或者django是否为像这样的阴影场提供功能。

1 个答案:

答案 0 :(得分:1)

django-modeltranslation使用注册方法,如here所述,这意味着在您首次启动django应用程序时会修补所有模型。初始化django-modeltranslation后,Post._meta.fields除包含text_fr之外,还包含转换后的字段text_detext

从jet-django看,似乎JetAdminModelDescription也已在启动应用程序时初始化,使用Model._meta.get_fields()检索了here的实际模型字段。

只要在django-modeltranslations之后初始化jet-django,这些字段也应可用于JetAdmin。

确保在您的INSTALLED_APPS设置中将jet-django django-modeltranslation之后放置,并且应该可以使用。