Интеграция переводов в админ-панель

Django-parler легко интегрируется с админ-панелью Джанго. Он включает класс TranslatableAdmin, который переопределяет класс ModelAdmin, предоставленный Джанго для управления переводом моделей.

Отредактируйте файл admin.py приложения shop и добавьте в него следующий импорт:

from parler.admin import TranslatableAdmin

Измените классы CategoryAdmin и ProductAdmin на наследование от TranslatableAdmin вместо ModelAdmin. Django-parler еще не поддерживает атрибут prepopulated_fields, но он поддерживает метод get_prepopulated_fields(), предоставляющий те же функциональные возможности. Теперь файл admin.py должен выглядеть следующим образом:

from django.contrib import admin
from .models import Category, Product
from parler.admin import TranslatableAdmin


class CategoryAdmin(TranslatableAdmin):
    list_display = ['name', 'slug']

    def get_prepopulated_fields(self, request, obj=None):
        return {'slug': ('name',)}
admin.site.register(Category, CategoryAdmin)


class ProductAdmin(TranslatableAdmin):
    list_display = ['name', 'slug', 'category', 'price', 'stock', 'available', 'created', 'updated']
    list_filter = ['available', 'created', 'updated', 'category']
    list_editable = ['price', 'stock', 'available']

    def get_prepopulated_fields(self, request, obj=None):
        return {'slug': ('name',)}
admin.site.register(Product, ProductAdmin)

Мы адаптировали админ-панель для работы с новыми переведенными моделями. Теперь можно синхронизировать базу данных с внесенными изменениями модели.

results matching ""

    No results matching ""