Как реализовать фильтры товаров django?
Посмотрите на django-hstore (при условии, что вы можете использовать PostgreSQL). Это поле, в котором можно хранить произвольное число пар ключ - значение. Таким образом, общие для всех видов товаров поля вы храните как обычные поля модели, а меняющиеся поля пакуете в hstore. По этим запакованным полям можно даже делать поиск, за счёт того, что HStore - это родной для PostgreSQL тип данных.
Ещё вы можете использовать тип JSON, тоже специфический для PostgreSQL. Отличается от hstore тем, что структура поля может быть древовидной и значения - типизированными (собственно, что и предполагает JSON). Пакетов, которые поддерживают это поле в Django, существует несколько, можно погуглить.
Также вариантом является упомянутый EAV, но лично мне очень не нравится этот подход. Отсутствие контроля типов, крайне низкая скорость на больших объёмах и общая уродливость решения. SQL-база данных создана не для того, чтоб её как key-value использовать. Лучше уж немного расширить её возможности костылями типа hstore.
Такие свойства сохраняю с помощью eav-django. Поиск делаю с помощью Sphinx - загоняю в мультиаттрибут все значения свойств для каждого товара и дальше запросом к sphinx можно вытянуть список id товаров, подходящих под фильтры. Плюс такого подхода еще в том, что можно совместить отбор по фильтрам и полнотекстовый поиск.