@Letivan

Python/Django Фильтр товаров на сайте?

Изучаю django и зашел в тупик по реализации фильтров на странице списка товаров.

Модели:

class Products(models.Model):
date_create = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')
date_edite = models.DateTimeField(auto_now=True, verbose_name='Дата изменения')
category = TreeForeignKey('Category', on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Категория", db_index=True)
nazvanie = models.CharField(max_length=350, verbose_name='Название', db_index=True)
kodtovara = models.CharField(max_length=50, verbose_name='Фирменный код', null=True, blank=True, db_index=True)
article = models.CharField(max_length=50, verbose_name='Артикул', null=True, blank=True, db_index=True)
slug = models.SlugField(blank=True)


class PropertiesProduct(models.Model):
nazvanie = models.CharField(max_length=500, verbose_name='Название', db_index=True)
slug_nazvanie = models.SlugField(blank=True)
znachenie = models.CharField(max_length=500, verbose_name='Значение', db_index=True)
slug_znachenie = models.SlugField(blank=True)
detail = models.BooleanField(null=True, blank=True, verbose_name='Использовать как свойство в описании товара', db_index=True, default=True)
filter = models.BooleanField(null=True, blank=True, verbose_name='Использовать для фильтра', db_index=True, default=True)
register = models.BooleanField(null=True, blank=True, verbose_name='Расширенные свойства', db_index=True, default=False)
tovary = models.ForeignKey('Products', on_delete=models.SET_NULL, null=True, verbose_name='Товар', db_index=True)


Модель свойства товаров имеет строковые поля для хранения названий свойств и значений у товаров, и поле привязку к товару. Свойства вынесены в отдельную таблицу так как они будут прилетать из 1С должны постоянно добавлятся/удалятся/редактироваться при обмене с 1С. В DB свойства хранятся как на фото из админки.

5bac7430f11e8656949133.jpeg
Модель свойств товара

Во фронтенде хочу вывести фильтрацию к примеру как на фото:

5bac743b55db8686992836.jpeg
Стандартный фильтр

Не знаю с какой стороны подступиться к реализации, может кто подскажет.
  • Вопрос задан
  • 3590 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Почитать про EAV, посмотреть на реализации. Потом почитать про фасетный поиск и погуглить его реализации. А после уже решать, что лучше подходит конкретно вашему проекту и стоит ли пилить своё решение или взять готовое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы