- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用与 Django 在管理页面中使用的相同的搜索引擎来在我的自定义 View 中显示结果。
我找到了this website建议使用以下代码:
from django.db.models import Q
from django.db.models.query import QuerySet
import operator
def django_admin_keyword_search(model, keywords, base_qs=None):
"""Search according to fields defined in Admin's search_fields"""
if not keywords:
return []
fields = model._meta.admin.search_fields
qs = QuerySet(model)
for keyword in keywords:
or_queries = [Q(**{'%s__icontains' % field: keyword}) for field in fields]
if base_qs is None:
other_qs = QuerySet(model)
else:
other_qs = base_qs
if qs._select_related:
other_qs = other_qs.select_related()
other_qs = other_qs.filter(reduce(operator.or_, or_queries))
qs = qs & other_qs
return qs
def do_keyword_search(model, query, base_qs=None):
return django_admin_keyword_search(model, query.split(' '),
base_qs=base_qs)
但我无法在没有出现属性错误(“Options”对象没有属性“admin”)的情况下运行该代码:fields = model._meta .admin.search_fields
编辑:我在使用管理员默认搜索引擎时做错了什么?
还有其他使用默认管理搜索引擎的方法吗?
最佳答案
我设法构建了自己的通用搜索,其工作方式类似于管理搜索。类如下:
from django.db.models import Q
from django.db.models.query import QuerySet
import operator
def django_admin_keyword_search(model, keywords, search_fields):
"""Search according to fields defined in Admin's search_fields"""
all_queries = None
for keyword in keywords.split(' '): #breaks query_string into 'Foo' and 'Bar'
keyword_query = None
for field in search_fields:
each_query = Q(**{field+'__icontains':keyword})
if not keyword_query:
keyword_query = each_query
else:
keyword_query = keyword_query | each_query
if not all_queries:
all_queries = keyword_query
else:
all_queries = all_queries & keyword_query
result_set = model.objects.filter(all_queries).distinct()
return result_set
享受吧!!
关于python - 以我自己的观点使用 Django Admin 搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137821/
Closed. This question is opinion-based。它当前不接受答案。
我有一个项目需要在工作和在家中使用两台不同的计算机进行。 我需要能够在两台计算机上都处理代码,所以问题有两个。 共享代码 共享工作空间。 用svn 1很简单;但是我感到很讨厌将损坏的代码提交给svn,
我正在尝试在 Eclipse 中实现 coreNLP 情绪分析器。得到错误: Unable to resolve "edu/stanford/nlp/models/lexparser/englishP
我有一个输入框: 如果我在输入字段中输入 .75 ,则应在 .75 之前自动添加 0 ,使其变为 0.75 此外,如果我输入 1.3 那么它应该变成 1.30 我已经尝试过: echo "
我有一个带有以下行的父组件 根据上下文,它呈现路由器配置中定义的两个组件之一 path: 'parent', component: Parent, children: [ {
我安装了最新的 angular-ui-select (v0.12) 和 angular v1.2.27。我的页面无法加载。我得到: expected expression, got . (a poin
我是一名优秀的程序员,十分优秀!