Оператор не существует: 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)