Как фильтровать jsonfield в моделях со списком в django?
models.py
class Product(DateTimeModel):
subcategory = models.ForeignKey(SubCategory, null=True, on_delete=models.CASCADE)
product_name = models.CharField(max_length=200)
brand_name = models.CharField(max_length=200)
item_colors = models.JSONField(max_length=500, null=True, blank=True)
views.py
Я хочу выполнить действие фильтрации в этой модели, списки запросов фильтрации я получаю из шаблона из чекбоксов.
def filters(request):
category_filters = request.GET.getlist('category', default=None)
color_filters = request.GET.getlist('colors', default=None)
if category_filters or color_filters:
total_filters = list(chain(category_filters, color_filters))
products = Product.objects.filter(Q(subcategory__title__in = total_filters) |
Q(item_colors__in = total_filters) )
Здесь я не получаю объекты, связанные с item_colors, как я ожидал. поле item_colors имеет вид (item_colors = {'colors':['black','red',..]}). Я не могу выполнить __in в поле JSON. Как мне правильно это сделать?