django-parler не показывает вкладки в admin

#django #django-mptt #django-parler

#django #django-mptt #django-parler

Вопрос:

По какой-то причине я не вижу никаких языковых вкладок при добавлении в admin. Я использую Django 1.9.10. Я использовал django-hvad, но решил попробовать parler. Я пробовал точно такой же код в новом проекте, и это сработало, но в моем существующем проекте это не так. Пожалуйста, обратите внимание, что я также использую django-mptt. Пробовал parler в отдельной модели от модели mptt и наоборот.

 settings/base.py

# Translations
gettext = lambda s: s
LANGUAGES = (
    ('en', gettext('English')),
    ('ar', gettext('Arabic')),
)

LOCALE_PATHS = (
    os.path.join(BASE_DIR, "locale"),
)

# # Parler Configuration
PARLER_LANGUAGES = {
    None: (
        {'code': 'ar', },
        {'code': 'en',},
    ),
    'default': {
        'fallback': 'ar',             # defaults to PARLER_DEFAULT_LANGUAGE_CODE
        'hide_untranslated': False,   # the defau< let .active_translations()       return fallbacks too.
    }
}
PARLER_DEFAULT_LANGUAGE_CODE = 'ar'
  

Модель

 class Category(MPTTModel, TranslatableModel):
    slug = models.SlugField(max_length=50, unique=True, null=True, blank=True)
    translations = TranslatedFields(
        title = models.CharField(max_length=90, unique=True, null=True, blank=True)
    )
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

    objects = CategoryManager()

    def __unicode__(self):

        return unicode(self.slug) or u''

    def get_absolute_url(self):
        return reverse("category:detail", kwargs={"slug": self.slug})

    class Meta:
        ordering = ["slug"]
        verbose_name = _("Category")
        verbose_name_plural = _("Categories")
  

admin.py

 class CategoryAdminForm(MPTTAdminForm, TranslatableModelForm):
    pass


class CategoryAdmin(TranslatableAdmin, MPTTModelAdmin):
    form = CategoryAdminForm

    def get_prepopulated_fields(self, request, obj=None):
        return {'slug': ('title',)}  # needed for translated fields


admin.site.register(Category, CategoryAdmin)
  

Ответ №1:

Я только что потратил много времени, чтобы исправить ту же проблему. Попробуйте использовать real SITE_ID вместо None :

 PARLER_LANGUAGES = {
    1: (
        {'code': 'ar', },
        {'code': 'en',},
    ),
    'default': {
        'fallback': 'ar',             # defaults to PARLER_DEFAULT_LANGUAGE_CODE
        'hide_untranslated': False,   # the defau< let .active_translations()       return fallbacks too.
    }
}
  

Комментарии:

1. Я изменил PARLER_LANGUAGES индекс с 1 на 2 , потому что у меня уже есть SITE_ID = 2 , SITE_ID это проблема отображения вкладок перевода в интерфейсе администратора, отличный ответ, вы решили мою проблему.

2. Gracias. я хочу объяснить. saludos

Ответ №2:

Попробуйте обновить до последней django-parler .

У нас была такая же проблема с Parler 1.5.1 и Django 1.8.14. Обновление до django-parler==1.6.5 и Django==1.8.15 заставило вкладки перевода снова отображаться в Admin.