我是新的模型翻譯,並且出現問題。在創建我的模型並註冊要在translation.py
中翻譯的字段後,當我執行manage.py syncdb
命令時,模型翻譯應用程序不會將翻譯的字段添加到模型中。字段在表格中。所以,如果我創建在Python殼的對象我無法訪問display_en
,因爲它會引發錯誤modeltranslation應用程序不會在模型中添加翻譯的字段
AttributeError: 'Content' object has no attribute 'display_en'
我的settings.py:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', '[email protected]'),
)
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"
我的models.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)