Я пытаюсь фильтровать элементы, используя django_filters
с JSONfield в моей модели, но я не могу этого сделать.
Если использовать CharFields
, я могу получить текущий результат,но мне нужно иметь возможность работать с запросами.
Когда я использую ModelMultipleChoiceFilter
, я получаю все варианты от фильтра, но фильтрация не происходит.
Models.py
class Product(models.Model):
name = models.CharField(max_length=120)
properties = JSONField(default=dict, blank=True, null=True, db_index=True)
Filters.py
from django_filters.rest_framework import FilterSet
from django_filters import rest_framework as filters
from products.models import Product
class ProductFilter(FilterSet):
color = filters.ModelMultipleChoiceFilter(
queryset=Product.objects.extra(
select={'color': "properties->>'color'"}).values_list('properties__color',
flat=True).distinct(),
field_name='properties',
to_field_name='properties',
lookup_expr='color__contains',
)
class Meta:
model = Product
fields = {
'color': 'color__contains',
}
This is Item
{
"id": 10,
"name": "Test_3",
"properties": {
"color": "Black",
"invertor technology": false,
"service area, m²": 24
},
},
Если я выберу в фильтре цвет Черный,
У меня есть эта ошибка: Выберите правильный вариант.Черный не входит в число допустимых значений.