You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 1.11使用modeltranslation翻译字段时Admin面板多显示原字段问题

解决Django 1.11中django-modeltranslation Admin显示多余字段的问题

嘿,我之前在Django 1.11使用modeltranslation时也碰到过一模一样的问题——Admin面板里同时冒出来原生字段和翻译字段,看着特别混乱。这主要是因为你没正确集成modeltranslation提供的专属Admin类,下面给你一步步修复:

1. 补全translation.py的正确配置

你的translation.py看起来没写完,得确保它完整配置了Country模型的翻译规则:

from modeltranslation.translator import register, TranslationOptions
from events.models import Country

@register(Country)
class CountryTranslationOptions(TranslationOptions):
    fields = ('name',)  # 指定要做翻译的字段就是name
    languages = ('en', 'fr')  # 明确声明支持英语和法语

2. 修改Admin类,继承TranslationAdmin

默认的ModelAdmin不知道怎么关联原生字段和翻译字段,所以得换成modeltranslation提供的TranslationAdmin,它会自动隐藏原生的name字段,只展示带有语言标签的翻译输入框:

from django.contrib import admin
from modeltranslation.admin import TranslationAdmin
from .models import Country

class CountryAdmin(TranslationAdmin):
    # 列表页直接用name就行,TranslationAdmin会自动适配当前语言显示内容
    list_display = ('name',)
    # 如果非要在列表页单独显示英法字段,也可以写成 ('name_en', 'name_fr')

admin.site.register(Country, CountryAdmin)

3. 最后检查几个关键配置

  • 确保settings.py里已经把modeltranslation加到INSTALLED_APPS中:
INSTALLED_APPS = [
    # 你的其他应用...
    'modeltranslation',
]
  • 运行迁移命令,确保翻译字段已正确同步到数据库:
python manage.py makemigrations
python manage.py migrate
  • 清除浏览器缓存或者用无痕模式打开Admin,有时候旧页面缓存会让问题迟迟不消失。

这么操作之后,Admin的表单页就只会显示带英语、法语标签的name输入框,不会再出现多余的原生name字段啦。

内容的提问来源于stack exchange,提问作者user9192656

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:18:16