Добавление перевода django-модели в существующие тесты руин проекта

#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".
 

Итак, подводя итог, у меня есть то, что я хотел — в моей базе данных есть поля для моих языков, данные не теряются, но выглядят так, как будто во время теста база данных по умолчанию не может быть создана из-за полей языка. Может ли кто-нибудь помочь с поиском решения? Если вам нужна дополнительная информация, просто дайте мне знать