我在MySQL数据库中有一个具有200k实例的Author模型。我想让用户搜索作者的唯一ID(它是一个字符串),然后选择一个ID,该ID随后将产生关于该作者的表格和小图形。
我要使用charfield模型表格吗?另外,有内置的搜索功能吗?
我认为Django没有内置的搜索功能。为此,您将不得不使用其扩展名之一(django-search或haystack)。
对于您的情况,它们似乎太复杂了,因此我将采用更简单的解决方案(而我会放弃使用表单):
from django.views.generic import ListView
from django.db.models import Q
from .models import Author
def SearchAuthorView(ListView):
def get_queryset(self):
name = self.request.GET['author_name']
name_tokens = name.split(' ')
matched_authors = []
authors = Author.objects.all()
for author in authors:
for name_token in author.name.split(' '):
if name_token in name_tokens:
matched_authors.append(author)
break
return matched_authors
如果使用200k,可能会遇到性能问题,因此,如果这样做,则应使用优化的原始MySql查询。
您可能还希望以某种方式订购结果。例如,给予“姓氏”匹配比“姓氏”匹配更大的优先级。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句