【发布时间】:2014-02-03 22:41:35
【问题描述】:
我正在尝试使用与 Django 在管理页面中使用的搜索引擎相同的搜索引擎来在我的自定义视图中显示结果。
我发现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)
但我无法在这段代码中运行它而不会出现 Attribute Error ('Options' object has no attribute 'admin'):fields = model._meta.admin.search_fields
编辑: 我在使用管理员默认搜索引擎时做错了什么?
这是使用默认管理员搜索引擎的任何其他方式吗?
【问题讨论】:
-
请注意该链接上的日期:7 年前。那是 Django 1.0 之前的事了,而且管理员完全不同。
标签: python django search-engine admin attributeerror