首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作符不存在:在django中字符varying[] = text[]?

操作符不存在:在django中字符varying[] = text[]?
EN

Stack Overflow用户
提问于 2022-02-21 13:31:19
回答 1查看 509关注 0票数 1

models.py

代码语言:javascript
复制
 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

代码语言:javascript
复制
 def filters(request):
          price_filters = request.GET.getlist('price', default=None)  # from form ['300','1000',...]
          color_filters = request.GET.getlist('colors', default=None)  # from form ['red']
          total_filters = list(chain(price_filters,color_filters))
          products = Product.objects.filter(Q(colors__in=total_filters) | (Q( price__gt=total_filters)) # I know the gt expecting number but it comes with string and integers. so I get error
          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.

如何完成这个任务。请帮帮忙。

编辑:,我想同时使用多个过滤器。即价格范围为“300”。“1000”应高于此清单。在执行此操作时,我得到了django.core.exceptions.FieldError: Unsupported lookup 'gt' for PositiveIntegerField or join on the field not permitted, perhaps you meant gt or gte?,如何实现this?.please,添加一些提示。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-02-22 01:08:28

您的字段colorstext[] (字符串数组)。您正在尝试使用带有字符串列表的IN运算符作为参数。这显然是行不通的,因为text[]的元素是text

您可能希望过滤所有与给定颜色重叠的产品。如果是这样的话,应该使用overlap operator

代码语言:javascript
复制
products = Product.objects.filter(colors__overlap=l)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71207193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档