#django #django-testing #django-modeltranslation
Вопрос:
У меня есть существующий проект, и я решил добавить варианты переводов. Я установил django-modeltranslation
, добавил языки в настройки, модели в translation.py
и добавил модели в admin.py
.
from modeltranslation.translator import translator, TranslationOptions
from .models import GameTask
class GameTaskTranslationOptions(TranslationOptions):
fields =('name', 'description', 'button_text')
translator.register(GameTask, GameTaskTranslationOptions)
@admin.register(GameTask)
class GameTaskAdmin(TranslationAdmin):
model = GameTask
Но, как я уже упоминал, я добавил его в существующий проект. Поэтому я должен переместить существующие данные в созданные поля. Итак, после makemigrations
, но до migrate
того, как я добавил в свой файл миграции:
def populate_function(apps, schema_editor):
management.call_command("update_translation_fields")
class Migration(migrations.Migration):
dependencies = [
('pages', '0054_auto_20210105_1041'),
]
operations = [
.........,
migrations.RunPython(populate_function, migrations.RunPython.noop),
]
После этого я бегу python manage.py migrate pages migrate_file
. И это работает. У меня обновлена база данных, и мои данные не потеряны, они перемещены в поле языка по умолчанию, заданное в настройках. Но после выполнения моего теста я получаю:
django.db.utils.ProgrammingError: column pages_gametask.button_text_pl does not exist.
LINE 1: ..._text_pl" = "pages_gametask"."button_text" WHERE ("pages_gam...
^
HINT: Perhaps you meant to reference the column "pages_gametask.button_text".
Итак, подводя итог, у меня есть то, что я хотел — в моей базе данных есть поля для моих языков, данные не теряются, но выглядят так, как будто во время теста база данных по умолчанию не может быть создана из-за полей языка. Может ли кто-нибудь помочь с поиском решения? Если вам нужна дополнительная информация, просто дайте мне знать