![](/img/trans.png)
[英]Django url slugs with modeltranslation NoReverseMatch Error
[英]Error in db with modeltranslation in django
我想为项目添加国际化,所以我使用 django-modeltranslation 应用程序。 但是,在完成配置和运行迁移的所有步骤后,当我进入我的管理员时,模型已注册,但是当我单击它时:
“您的数据库安装出现问题。确保已创建适当的数据库表,并确保适当的用户可以读取该数据库。”
这是代码(请注意,为了清楚起见,我已将其全部放在一个文件中):
INSTALLED_APPS = [ 'modeltranslation', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'nuggets', ] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'Trans', 'USER': 'postgres', 'PASSWORD': 'c1l2a3u4', 'HOST': '127.0.0.1', 'PORT': '5432', } } LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True gettext = lambda s: s LANGUAGES = ( ('en', gettext('English')), ('es', gettext('Spanish')), )
#Models code from django.db import models class News(models.Model): title = models.CharField(max_length=255) text = models.TextField() #Admin code from django.contrib import admin from .models import News from modeltranslation.admin import TranslationAdmin class NewsAdmin(TranslationAdmin): pass admin.site.register(News, NewsAdmin) #translation.py code from modeltranslation.translator import translator, TranslationOptions from .models import News class NewsTranslationOptions(TranslationOptions): fields = ('title', 'text',) translator.register(News, NewsTranslationOptions)
我在创建模型之前尝试过,之后使用默认数据库,使用 postgre ......似乎没有任何效果,请帮忙!
我在 django-modeltranslation 中遇到了类似的问题。 在 Django 2.0.5 中,当我打开管理面板时出现错误。
需要更新包:
pip install django-modeltranslation==0.13-beta1
更新翻译:
python manage.py update_translation_fields
一切正常。
OP 在Django
2.0 中使用django-modeltranslation
。 但是他们的测试目前在这个版本上失败了。
在settings.py
使用ugettext_lazy
以避免循环导入:
from django.utils.translation import ugettext_lazy as _
LANGUAGES = [
('en', _('English')),
('th', _('Thai')),
]
MODELTRANSLATION_DEFAULT_LANGUAGE = 'en'
MODELTRANSLATION_LANGUAGES = ('en', 'th')
尝试将您的modeltranslation
放在INSTALLED_APPS
的末尾,在django
默认之后。
您是否在其他地方注册了您的模型? 在重新注册之前,您可以尝试取消注册。
admin.site.unregister(News)
admin.site.register(News, NewsAdmin)
您是否按照文档中所述使用python manage.py makemigration
执行步骤?
您是否尝试过sync_translation_fields
管理命令?
此命令比较数据库和翻译模型定义(查找新的翻译字段)并提供 SQL 语句来更改表。 在将新语言添加到
settings.LANGUAGES
或注册模型的TranslationOptions
的新字段后,您应该运行此命令。
看起来 django-modeltranslation 不适用于 django 2.0(至少对我和那里的安装过程而言)。 但它与 django 1.11 相关。
我的配置:Django 2.2.5、Python 3.7.4、bootstrap4-0.1.0
编辑 ~/anaconda3/envs/django/lib/python3.7/site-packages/modeltranslation/models.py,添加on_delete=models.CASCADE
creator_user = models.ForeignKey(User, null=True, default=None, related_name='model_translation', verbose_name=u"User translator", help_text=u"User that created last translation version", on_delete=models.CASCADE,)
编辑 /anaconda3/envs/django/lib/python3.7/site-packages/modeltranslation/migrations/0001_initial.py,添加import django.db.models.deletion和on_delete=django.db.models.deletion.CASCADE,
from django.db import models, migrations
import django.db.models.deletion
('creator_user', models.ForeignKey(related_name='model_translation', default=None, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, help_text='Usuario que ha realizado la \xfaltima traducci\xf3n', null=True, verbose_name='Usuario que ha realizado la traducci\xf3n')),
In settings.py
# ModelTranslation
IS_MONOLINGUAL=False
TRANSLATABLE_MODEL_MODULES = ["marketplace.models"]
使用您的应用名称修改它,TRANSLATABLE_MODEL_MODULES = [".models"]
$ python manage.py makemigrations
$ python manage.py migrate
希望它也适用于您的情况。
似乎不再以该特定库名称维护“模型翻译”。 而更高版本的 django 需要为 models.ForeignKey 设置 on_delete
对我来说这有效:
pip uninstall modeltranslations
pip install django-modeltranslations
据我所知,它是同一个库,但你得到了一个更新的版本。 就我而言,我根本不需要修改 settings.py。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.