У меня есть продукт:Джанго динамический фильтр
class Product(models.Model):
...
Особенности этого продукта, с Ф.К. к динамическим признакам:
class ProductFeatures(models.Model):
product = models.ForeignKey('Product')
features_category = models.ForeignKey('FeaturesCategory')
value = models.ForeignKey('Features')
Динамическое имя атрибута модели:
class FeaturesCategory(models.Model):
title = models.CharField(max_length=255, verbose_name=_(u'Название'))
и ценностей для каждого атрибута:
class Features(models.Model):
category = models.ForeignKey('FeaturesCategory')
value = models.CharField(max_length=255, verbose_name=_(u'Значение'))
Пример работы все это:
Мы создали FeaturesCategory объект - "Color", добавил некоторые значения к нему: "Красный", "Зеленый", "Blue". И добавил еще один FeaturesCategory объект - "Count" со значениями: "1", "2", "3"
Все это мы добавим к продукту, например:
цвет - красный счет - 3
Проблема, как фильтровать эту продукцию ??
for param in self.request.GET:
if not param in ['pangination', 'view', 'order', 'page']:
name, value = param.split('_')
filters.append(
Q(productfeatures__features_category__title=name,
productfeatures__features_category__features__value=value)
)
Если у нас есть два «Params» для фильтрации не работает
Какие ценности вы ожидаете в ' '' request.GET'''? – schillingt
Я не уверен, что вы используете 'Q' правильно. Вместо этого попробуйте выполнить «productfeatures__features_category__title = name, productfeatures__features_category__features__value = value». – Ngenator
Моя проблема в том, что я генерирую запрос следующим образом: 'filter (Q (attr = 'Color', value = 'Red'), Q (attr = 'Count', value = '5'))' Если я выбрал два фильтра. .. – Arti