Django多语言帖子模型

时间:2018-11-08 19:47:53

标签: python django python-3.x multilingual django-multilingual

我是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',)}

非常感谢您。

1 个答案:

答案 0 :(得分:1)

您可能是对的,当前django-modeltranslation不支持Django 2.1.2和/或Python 3.7.1。他们的文档说,他们支持Python 3.6和Django 2.0,最新提交于2018年7月2日。

从这里您可以选择:

  • 修复django-modeltranslation中的错误并为项目做出贡献。
  • 使用另一个可与Django 2.1.2和Python 3.7.1一起使用的翻译Django软件包(请点击此处:https://djangopackages.org/grids/g/i18n/)。
  • 使用django-modeltranslation,但将Django降级为2.0和/或Python降级为3.6。