Django FieldError:不支持的查找';不合格';不允许用于CharField或在字段上连接

Django FieldError:不支持的查找';不合格';不允许用于CharField或在字段上连接,django,Django,我收到FieldError:不允许在字段上查找CharField或join的不支持的“uncent”。感谢您的帮助。有什么想法吗 #template <form class="navbar-form navbar-left" method="GET" action="{% url 'search' %}" value="{{request.get.q}}"> <div class="form-group"> <input type

我收到
FieldError:不允许在字段上查找CharField或join的不支持的“uncent”
。感谢您的帮助。有什么想法吗

#template
<form class="navbar-form navbar-left" method="GET" action="{% url 'search' %}" value="{{request.get.q}}">
        <div class="form-group">
          <input type="text" name="q" class="form-control" placeholder="Search" >
        </div>
          <button type="submit" class="btn btn-default">Submit</button>
      </form>

#views.py
def Search(request):
    queryset_list=Testimony.objects.all().order_by('timestamp')
    if request.user.is_staff or request.user.is_superuser:
        queryset_list=Testimony.objects.all()

    print('1')
    if request.method=='GET':
        query=request.GET.get("q")
        print('2')
        queryset_list = Testimony.objects.filter(
            Q(title__unaccent__lower__trigram_similar=query)|
            Q(body__unaccent__lower__trigram_similar=query)|
            Q(username__unaccent__lower__trigram_similar=query)
            #Q(firstname__unaccent__lower__trigram_similar__icontains=query)
            ).distinct().order_by('timestamp')


    print('3')
    paginator = Paginator(queryset_list, 20)
    page_request_var="page"
    page=request.GET.get(page_request_var)
    try:
        queryset=paginator.page(page)
    except PageNotAnInteger:
        queryset=paginator.page(1)
    except EmptyPage:
        queryset=paginator.page(paginator_num.pages)

    print('4')
    context={
    "object_list": queryset,
    "title":"list",
    "page_request_var":page_request_var,
    }

    return render(request, 'search.html', {'queryset_list':queryset_list})
#模板
提交
#views.py
def搜索(请求):
queryset_list=execution.objects.all().order_by('timestamp'))
如果request.user.is_staff或request.user.is_superuser:
queryset_list=demission.objects.all()
打印('1')
if request.method==“GET”:
query=request.GET.GET(“q”)
打印('2')
queryset_list=demission.objects.filter(
Q(title\uuu uncent\uuuu lower\uuu trigram\u simular=query)|
Q(body\u uncent\u lower\u trigram\u simular=query)|
Q(用户名\uuuuuuncent\uuuuuuu下三元\uuuuuu similor=query)
#Q(firstname\uuuuuu uncent\uuuuu lower\uuuu trigram\u similor\uuuuu icontains=query)
).distinct().order_by('时间戳')
打印('3')
分页器=分页器(查询集列表,20)
page\u request\u var=“page”
page=request.GET.GET(page\u request\u var)
尝试:
queryset=paginator.page(第页)
除第页外,第页:
queryset=paginator.第(1)页
除空页外:
queryset=paginator.page(paginator_num.pages)
打印('4')
上下文={
“对象列表”:查询集,
“标题”:“列表”,
“页面请求变量”:页面请求变量,
}
返回呈现(请求'search.html',{'queryset_list':queryset_list})
回溯指向:
Q(用户名\uuuuu uncent\uuuu lower\uuu trigram\u simular=query)
对于Django至少1.11()和postgresql至少8.5()

  • 在已安装的应用程序(settings.py)中添加行“django.contrib.postgres”
  • 激活“uncent”扩展名
    • 在PgAdmin()或
    • 创建am empty迁移(./manage.py makemigrations--empty您的.application.name)并使用以下内容编辑生成的文件(),最后运行./manage.py migrate:

从django.contrib.postgres.operations导入非扩展
类迁移(migrations.Migration):
依赖项=[
()
]
操作=[
不允许扩展()
]

琐事:它在admin.py中不起作用,但在其他.py文件中起作用。

应用程序“django.contrib.postgres”提供了
uncent
trigram\u类似的
。您是否将其添加到已安装的应用程序中?谢谢!它成功了。出色的入门!。。只需补充一点,空迁移脚本应修改为
/manage.py makemigrations——清空您的.application.name
from django.contrib.postgres.operations import UnaccentExtension

class Migration(migrations.Migration):

dependencies = [
    (<snip>)
]

operations = [
    UnaccentExtension()
]