Python 多搜索DJANGO
我刚刚完成了一个教程,用户可以搜索城市,但可以只输入一个城市。如果我想搜索奥斯陆,布达佩斯在同一时间是不可能的。你知道我可以添加什么来改变它吗 观点:Python 多搜索DJANGO,python,django,search,Python,Django,Search,我刚刚完成了一个教程,用户可以搜索城市,但可以只输入一个城市。如果我想搜索奥斯陆,布达佩斯在同一时间是不可能的。你知道我可以添加什么来改变它吗 观点: from django.views.generic import TemplateView, ListView from django.db.models import Q from .models import City class HomePageView(TemplateView): template_name='home.htm
from django.views.generic import TemplateView, ListView
from django.db.models import Q
from .models import City
class HomePageView(TemplateView):
template_name='home.html'
class SearchResultsView(ListView):
model = City
template_name = 'search_results.html'
def get_queryset(self):
query = self.request.GET.get('q')
object_list = City.objects.filter(
Q(name__icontains=query) | Q(state__icontains=query)
)
return object_list
TEMPLATE:
<h1>Search Results</h1>
<ul>
{% for city in object_list %}
<li>
{{ city.name }}, {{ city.state }}
</li>
{% endfor %}
</ul>
您可以按以下方式筛选多个名称:
from django.db.models import Q
def get_queryset(self):
queries = self.request.GET.get('q')
queries = queries.split(', ')
q = Q()
for query in queries:
q |= (Q(name__icontains=query) | Q(state__icontains=query))
return City.objects.filter(q)
City.objects.filtername\uuu in=名称列表
其中,名称列表是列表类型的对象,例如名称列表=['name\u 1','name\u 2']
我不确定您是如何生成查询的,但您需要更改它以允许用户输入多个城市。我们可以这样做:
from django.db.models import Q
def get_queryset(self):
queries = self.request.GET.get('q')
queries = queries.split(', ')
q = Q()
for query in queries:
q |= (Q(name__icontains=query) | Q(state__icontains=query))
return City.objects.filter(q)
您可能需要阅读:然后我在分配之前引用的/search/local变量'query'处得到错误:UnboundLocalError。很遗憾,然后我得到了名称错误,即Q未定义。在顶部添加此项:from django.db.models import Q。我已更新了答案。请检查!嗨,我真的很感谢你的帮助我要读这个!嗨,这是本教程。我仍然需要帮助: