0

我有现有项目,我决定添加翻译选项。我安装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".

总而言之,我有我想要的 - 我的数据库中有我的语言字段,数据没有丢失,但看起来在测试期间,由于语言字段而无法创建默认数据库。有人可以帮助寻找解决方案吗?如果需要更多信息,请告诉我

4

0 回答 0