Оператор не существует: character varing[] = text[] в django?

models.py

 from django.contrib.postgres.fields import ArrayField

 class Product(DateTimeModel):
          colors = ArrayField(models.CharField(max_length=500),null=True, blank=True) # I am having => black,red

views.py

 def filters(request):
          color_filters = request.GET.getlist('colors', default=None)  # from form ['red']
          products = Product.objects.filter(colors__in=l)
          print(products)

Когда я выполняю это, я получаю эту ошибку ProgrammingError at /product/filter-query/ operator does not exist: character varying[] = text[] HINT: No operator matches the given name and argument types. You might need to add explicit type casts.

Как это сделать. пожалуйста, нужна помощь.

Вашим полем colors является text[], массив строк. Вы пытаетесь использовать оператор IN со списком строк в качестве параметра. Это, очевидно, не сработает, поскольку элементами text[] является text.

Возможно, вы хотите отфильтровать все продукты, которые пересекаются с заданными цветами. В этом случае вам следует использовать оператор overlap :

products = Product.objects.filter(colors__overlap=l)
Вернуться на верх