我是模型翻译的新手,我有一个问题。当我manage.py syncdb
在创建模型并在模型翻译translation.py
应用程序中注册要翻译的字段后执行命令时,不会将翻译后的字段添加到模型中。这些字段在表中。因此,如果我在 python shell 中创建一个对象,我将无法访问display_en
,因为它会引发错误
AttributeError: 'Content' object has no attribute 'display_en'
我的 settings.py :
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'test_db', # Or path to database file if using sqlite3.
'USER': 'postgres', # Not used with sqlite3.
'PASSWORD': 'admin', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '5432', # Set to empty string for default. Not used with sqlite3.
}
}
SITE_ID = 1
TIME_ZONE = 'UTC'
LANGUAGE_CODE = 'fr-fr'
ugettext = lambda s: s
LANGUAGES = (
('fr', ugettext('French')),
('en', ugettext('English')),
('ja', ugettext('Japanese')),
)
USE_I18N = True
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
)
USE_L10N = True
USE_TZ = True
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'mysite.urls'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'tagging',
#'social_auth',
'south',
'django.contrib.admin',
'sorl.thumbnail',
'modeltranslation',
'myapp',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
TRANSLATION_REGISTRY = "myapp.translation"
我的模型.py:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
class Test(models.Model):
display = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('test.display'))
url = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('test.url'))
我的翻译.py:
from modeltranslation.translator import translator, TranslationOptions
from myapp.models import Test
class TestTranslationOptions(TranslationOptions):
fields = ('display')
translator.register(Test, TestTranslationOptions)