我有现有项目,我决定添加翻译选项。我安装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".
总而言之,我有我想要的 - 我的数据库中有我的语言字段,数据没有丢失,但看起来在测试期间,由于语言字段而无法创建默认数据库。有人可以帮助寻找解决方案吗?如果需要更多信息,请告诉我