簡體   English   中英

Django-modeltranslation ValueError:添加翻譯字段時出錯。 Model 已經包含該字段

[英]Django-modeltranslation ValueError: Error adding translation field. Model already contains the field

我正在嘗試使用 django-modeltranslation 在 Django 項目中實現本地化。 該文檔非常清晰明了,我已經按照它在我的項目中使用它。

問題是,當我嘗試遷移模型時,我得到一個無法解釋的 ValueError。

這是我的代碼:

設置.py

    INSTALLED_APPS = [
        
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'modeltranslation',
        'core',
        'blog',
        'staticpages',
        
    ]

# Default language
LANGUAGE_CODE = 'en'

# Languages supported by translation
LANGUAGES = [
    ('en', ('English')),
    ('es', ('Spanish')),
    ('es', ('Italian')),
]

# Enable translations
USE_I18N = True

USE_L10N = True

USE_TZ = True

模型.py

# Create your models here.
class Homepage(models.Model):
    slogan = models.CharField(max_length=500)
    about_text = models.TextField()

翻譯.py

from modeltranslation.translator import translator, TranslationOptions
from .models import Homepage

class HomepageTranslationOptions(TranslationOptions):
    fields = ('slogan', 'about_text')

translator.register(Homepage, HomepageTranslationOptions)

這是我得到的錯誤:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/django/core/management/__init__.py", line 377, in execute
    django.setup()
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/django/apps/registry.py", line 122, in populate
    app_config.ready()
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/apps.py", line 11, in ready
    handle_translation_registrations()
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/models.py", line 75, in handle_translation_registrations
    autodiscover()
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/models.py", line 26, in autodiscover
    import_module(module)
  File "/Users/Andrea/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/Users/Andrea/Documents/agency/staticpages/translation.py", line 7, in <module>
    translator.register(Homepage, HomepageTranslationOptions)
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/translator.py", line 457, in register
    self._register_single_model(model, opts)
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/translator.py", line 474, in _register_single_model
    add_translation_fields(model, opts)
  File "/Users/Andrea/anaconda3/lib/python3.6/site-packages/modeltranslation/translator.py", line 163, in add_translation_fields
    (model._meta.object_name, localized_field_name))
ValueError: Error adding translation field. Model 'Homepage' already contains a field named 'slogan_es'.

有沒有人有任何暗示為什么我得到這個? 我從未在數據庫中創建過名為 slogan_es 的字段。 相反,這正是 django-modeltranslation 應該代表我做的,所以我不明白為什么它會拋出這樣的錯誤。

你能幫助我嗎? 非常感謝大家!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM