【发布时间】:2020-05-24 14:56:07
【问题描述】:
我正在开发搜索功能。我正在尝试使用 django 3.0 从数据库中查询多个字段。每当我运行代码时,我都会收到“未找到以下结果:“”。我的代码可能有什么问题?
这是我的代码:
views.py
def search(query=None):
queryset = []
queries = query.split(" ")
for q in queries:
posts = AdPost.objects.filter(
Q(category__icontains=q),
Q(sub_category__icontains=q),
Q(detail__icontains=q),
).distinct()
for post in posts:
queryset.append(post)
return list(set(queryset))
def home(request):
context = {}
query = " "
if request.GET:
query = request.GET['q']
context['query'] = str(query)
ad_posts = sorted(search(query), key=attrgetter('date_updated'), reverse=True)
context['ad_posts'] = ad_posts
user = request.user
if not user.is_authenticated:
return redirect('login')
form = PostForm(request.POST or None, request.FILES or None)
if form.is_valid():
obj = form.save(commit=False)
obj.author = user
obj.save()
form = PostForm()
context['post_form'] = form
return render(request, 'posts/home.html', context)
home.html
<div class="content">
{% if ad_posts %}
{% for post in ad_posts %}
<div>
{% include 'snippets/post_link.html' with ad_post=post %}
</div>
{% endfor %}
{% else %}
<div>
{% include 'snippets/post_link.html' with query=post %}
</div>
{% endif %}
</div>
sn-ps/post_link.html
{% if ad_posts %}
<div class="card">
<p><b>{{post.author.name}}</b> {{post.date_published}}</p>
<p>{{post.detail}}</p>
</div>
{% else %}
<div class="card">
<h4>No results found for: "{{query}}"</h4>
</div>
{% endif %}
搜索表单位于 base.html
<form class="">
<input type="search" name="q" id="id_q" value="{{query}}">
<button type="submit">Submit</button>
</form>
【问题讨论】:
标签: html django django-views django-templates