Как фильтровать 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. Как мне правильно это сделать?

Вернуться на верх