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()
]