我是 django 的初学者。我尝试创建多语言博客。
我使用 django 2.1.2 和 Python 3.7.1
现在,我可以轻松地将 url、关键字等翻译成“ gettext_lazy
”,而且效果很好……
但我找不到任何方法或插件来翻译我的帖子模型。
我尝试安装 django-modeltranslation 但我无法使用。我认为这个插件与我的 django 版本不兼容......因为我总是_clone() got an unexpected keyword argument '_rewrite'
出错。
我不知道如何解决它。
翻译我的帖子的最佳解决方案是什么?
我想像这样在管理员中看到我的文章; https://image.ibb.co/kiuFFA/Screenshot-16.jpg
setting.py lang 像这样的设置;
from django.utils.translation import gettext_lazy as _
LANGUAGE_CODE = 'en'
LANGUAGES = (
('de', _('Deutsch')),
('en', _('English')),
)
MULTILINGUAL_LANGUAGES = (
"en",
"de",
)
我的基本 urls.py 是这样的;
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import gettext_lazy as _
urlpatterns = [
path('i18n/', include('django.conf.urls.i18n')),
]
urlpatterns += i18n_patterns(
path(_('admin/'), admin.site.urls, name="admin"),
path(_('about/'), views.about, name="about"),
path(_('contact/'), include("contact_form.recaptcha_urls")),
path('', include("article.urls")),
path(_('user/'), include("user.urls")),
path('', views.index, name="index"),
prefix_default_language=True,
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我的model.py是这样的;
class Article(models.Model):
author = models.ForeignKey("auth.User",on_delete = models.CASCADE, verbose_name="Author")
title = models.CharField(max_length = 120, verbose_name="Title")
category = models.ForeignKey('Category', on_delete = models.CASCADE, null=True, blank=True)
content = RichTextField(verbose_name="Content")
created_date = models.DateTimeField(auto_now_add=True, verbose_name="Created Date")
image = models.ImageField(blank=True, null=True, verbose_name="Add image (.jpg .png)")
slug = models.SlugField(unique=True, max_length = 130)
def __str__(self):
return self.title
我的 admin.py 是这样的;
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ["title", "category", "created_date", "author"]
list_display_links = ["title", "author", "created_date"]
search_fields = ["title","content"]
list_filter = ["created_date","author"]
prepopulated_fields = {"slug":('title',)}
非常感谢您提前。