#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.