Я реализовал данную логику чере json. + django поддерживает jsonb который можно индексировать (Я не помню можно ли это делать для всех бд, но обычный json для всех). У меня есть репозиторий на гитхаб который использует именно эту логику.
Вот этот репозиторий. Исщите эту логику в приложении posts. И все новые характеристики для каждой отдельной категории находятся в attributes_conf. А на счет добавления их в админку, то в создании категории товаров вам самостоятельно прийдется создавать свой виджет на js где вы будете выбирать тип поля и характеристики для этого поля типа max_length, а потом при сохранении категории эти данные отправляются в этот конфигурационный файл attributes_conf.
P. S. Если данное решение вам будет казаться слишком замудренным, то поизучайте тему EAV структуру данных (Но оно работает медленно, и создает большую нагрузку на бд). Но по этой теме нужно больше копаться по источникам. Я нашел довольно мало материала в интернете.