Добрый день! Не могу создать запрос в django. Сделаны фильтры на сайте таким образом:
class FilterCategory(CreationModificationDateMixin):
category = TreeManyToManyField(
'category.Category',
verbose_name='Категория фильтра'
)
name = models.CharField(
'Название фильтра для категории',
max_length=250
)
slug = models.SlugField(
'Название фильтра для URL',
max_length=250
)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Фильр'
verbose_name_plural = 'Фильтры'
class FilterSelect(CreationModificationDateMixin):
filter_category = models.ForeignKey(
FilterCategory,
verbose_name='Фильтр Категории',
related_name='values'
)
name = models.CharField(
'Значение фильтра',
max_length=250
)
slug = models.SlugField(
'Значение фильтра для URL',
max_length=250
)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Занчение фильтра'
verbose_name_plural = 'Значение фильтров'
class ProductFilter(models.Model):
product = models.ForeignKey(
'products.Product',
on_delete=models.CASCADE,
verbose_name='Товар',
related_name='filters'
)
filter_category = models.ForeignKey(
FilterCategory,
null=True,
on_delete=models.CASCADE,
verbose_name='Фильтр категории'
)
values = models.ForeignKey(
FilterSelect,
null=True,
blank=True,
verbose_name='Значения фильтра'
)
def __str__(self):
return 'Фильтр'
class Meta:
verbose_name = 'Фильтр товаров'
verbose_name_plural = 'Фильтры товаров'
То есть фильтр привязывается к определенным категориям, FilterSelect привязывается к FilterCategory, а ProductFilter привязывается к товару и обоим FilterSelect и FilterCategory.
В шаблоне значения вывожу так:
{% for fil in product.filters.all %}
<div class="col-md-6">
<div class="row">
<div class="col-xs-6"><div class="sec-t">{{ fil.filter_category.name }}</div></div>
<div class="col-xs-6">
<div class="sec-v"><a href="#">{{ fil.values.name }}</a></div>
</div>
</div>
{% endfor %}
Но в самой категории не могу понять как фильтровать товары. Пробовал такое
for value in values:
qs.filter(filters__values__slug=value)
Где value - это slug для фильтра который приходит с фронтенда. Данный вариант не работает. А идея проста: фильтровать товары для которых определенны значения slug в FilterSelect точно такие же как и в массиве values.
Как можно такое сделать?