首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模型翻译-无法获取和查看原始字段

Django模型翻译-无法获取和查看原始字段
EN

Stack Overflow用户
提问于 2018-01-25 10:41:23
回答 1查看 2.4K关注 0票数 2

我正在尝试在我的项目中使用django-modeltranslation

现在,只针对只有一个字段的Tag模型-- name

我创建并注册了TranslationOptions,然后是makemigrationsmigrate

现在我无法访问原始的name文本。它似乎被替换为'‘(空字符串),但它不是:

代码语言:javascript
复制
In [6]: Tag.objects.first()
Out[6]: <Tag: >

In [7]: Tag.objects.first().name
Out[7]: u''

In [8]: Tag.objects.first().__dict__
Out[8]: 
{'_state': <django.db.models.base.ModelState at 0x7fc96ad41710>,
 'id': 1,
 'name': u'Sport',
 'name_cs': None,
 'name_de': None,
 'name_en': None,
 'name_es': None,
 'name_fr': None,
 'name_ru': None,
 'name_sk': None}

In [9]: Tag.objects.first().name
Out[9]: u''

你知道如何进入这个领域吗?

编辑

models.py

代码语言:javascript
复制
class Tag(models.Model):
    name = models.CharField(max_length=50,verbose_name=u'Tag',unique=True)


    def __unicode__(self):
        return self.name

translation.py

代码语言:javascript
复制
from modeltranslation.translator import register, TranslationOptions

from tags.models import Tag


@register(Tag)
class TagsTranslationOptions(TranslationOptions):
    fields = ('name',)

settings.py

代码语言:javascript
复制
USE_I18N = True
USE_L10N = False
gettext = lambda x: x

LANGUAGE_CODE = 'en'
LANGUAGES = [
    ('en', gettext('EN')),
    ('fr', gettext('FR')),
    ('es', gettext('ES')),
    ('de', gettext('DE')),
    ('ru', gettext('RU')),
    ('sk', gettext('SK')),
    ('cs', gettext('CZ')), ]

Admin中也存在同样的问题

详细信息:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 15:39:06

根据文档

从原始字段读取值将返回转换为当前语言的值。

这意味着tag.name不返回tag.__dict__['name'],而是返回tag.__dict__['name_en'] (假设英语是一种活动语言)。

看起来,您已经将模型转换添加到现有的项目中,并且有了现有的数据。为了使模型转换正常工作,您需要运行update_translation_fields,这是一个由应用程序(文档链接)提供的管理命令。它将将数据从原始字段复制到默认转换字段(从titletitle_en)。

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

https://stackoverflow.com/questions/48440899

复制
相关文章

相似问题

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