Как получить доступ к переводу, определенному в базовой модели, из представлений и панели администратора дочерней модели
В проекте, который достался мне в наследство, есть несколько полиморфных моделей, основанных на общей модели. Что-то вроде:
from django.db import models
from polymorphic.models import PolymorphicManager, PolymorphicModel
class Product(PolymorphicModel):
    name=models.CharField(max_length=127)
    objects=PolymorphicManager
class Book(Product):
    pass
class Drink(Product):
    pass
<
Тем не менее, я модифицировал модели следующим образом:
from django.db import models
from parler.models import TranslatableModel, TranslatedFields
from parler.managers import TranslatableManager, TranslatableQuerySet
from polymorphic.models import PolymorphicManager, PolymorphicModel
from polymorphic.query import PolymorphicQuerySet
class ProductQuerySet(PolymorphicQuerySet, TranslatableQuerySet):
    pass
class ProductManager(PolymorphicManager, TranslatableManager):
    queryset_class = MarkerQuerySet
class Product(PolymorphicModel):
    translations = TranslatedFields(
        name=models.CharField(max_length=127)
    objects=ProductManager
class Book(Product):
    pass
class Drink(Product):
    pass
А в оболочке django все работает нормально:
In [1]: from product.models import Book
In [2]: b0 = Book.objects.first()
In [3]: b0
Out[3]: <Book: A Brief History of Time>
In [4]: b1 = Book()
In [5]: b1.name = 'Hitchhikers Guide to the Galaxy'
In [6]: b1.save()
In [7]: b2 = Book(name='Slaughterhouse V')
In [8]: b2.save()
Однако, когда я запускаю тесты конечных точек, я получаю несколько загадочную ошибку:
.venv/lib/python3.12/site-packages/django/db/models/sql/query.py:1577: in _add_q
    child_clause, needed_inner = self.build_filter
.
.
.
>       arg, value = filter_expr
E       ValueError: too many values to unpack (expected 2)
И другая ошибка, когда я пытаюсь увидеть панель администратора для дочерних моделей:
Cannot resolve keyword 'name' into field.
Я попробовал добавить вычисляемые свойства к дочерним моделям, чтобы посмотреть, может ли это исправить админ-панель, но это не помогло. Есть ли у кого-нибудь опыт создания чего-то подобного?
 Мне следовало внимательнее читать документацию. Все заработало, как только я добавил PolymorphicParentModelAdmin и PolymorphicChildModelAdmin в качестве базовых классов в соответствующие панели администратора, а также указал поля, которые они делают доступными:
ProductAdmin(
    TranslatableAdmin,
    PolymorphicParentModelAdmin,
):
    base_model = Product
    child_models = (Book, Drink)
BookAdmin(
    TranslatableAdmin,
    PolymorphicChildModelAdmin,
):
    base_model = Product
    base_model = Marker
    base_fields = ("name")
DrinkAdmin(
    TranslatableAdmin,
    PolymorphicChildModelAdmin,
):
    base_model = Product
    base_model = Marker
    base_fields = ("name")