首页 > 解决方案 > 在 Django 中匹配包含标签的数组字段作为 Trigram 只接受文本而不接受列表

问题描述

基本上我需要将请求的产品标签列表与其他产品标签列表匹配,并准备查询集以反映为类似产品。

模型.py

title = models.CharField(max_length=300)
tags = ArrayField(models.CharField(max_length=100), default=list,null=True,blank=True)

视图.py

product = Product.objects.all().filter(slug=slug)
similar_products = Product.objects.annotate(
    similarity=TrigramSimilarity('title',product.title),).filter(similarity__gt=0.1).order_by('-similarity')

与标题字段匹配有效,但一旦我尝试使用“标签”和 product.tags 进行匹配,它就会引发错误

function similarity(character varying[], text[]) does not exist

示例标签列表看起来像 [motor,helmet,bluetooth,speakers]

标签: pythondjangolistfuzzy-searchtrigram

解决方案


推荐阅读