我使用的CMS在运行时通过API对我的模型进行映射。
除本地化字段外,它工作正常,因为我使用https://django-modeltranslation.readthedocs.io/en/latest/registration.html来添加显然没有映射的“阴影”字段(它们不存在于模型本身,而是通过“寄存器”添加的)< / p>
有什么办法可以告诉我的模型它拥有那些字段吗?
它可以找到label
字段,但是错过了在运行时动态添加的label_fr
和label_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-modeltranslation
和jet-django
应用程序,后者则提供了JET Admin UI使用的API,用于进行模型查找。
我不知道我的问题是否必须在jet-django本身中解决,或者django是否为像这样的阴影场提供功能。
答案 0 :(得分:1)
django-modeltranslation使用注册方法,如here所述,这意味着在您首次启动django应用程序时会修补所有模型。初始化django-modeltranslation后,Post._meta.fields
除包含text_fr
之外,还包含转换后的字段text_de
和text
。
从jet-django看,似乎JetAdminModelDescription
也已在启动应用程序时初始化,使用Model._meta.get_fields()
检索了here的实际模型字段。
只要在django-modeltranslations之后初始化jet-django,这些字段也应可用于JetAdmin。
确保在您的INSTALLED_APPS
设置中将jet-django django-modeltranslation之后放置,并且应该可以使用。