问题描述
我正在制作一个 Django 网站,该网站具有使用 Postgres 的全文搜索。但是,当我进行搜索时,没有任何结果出现。我做错了什么吗?这是我的代码:
视图.py
from django.shortcuts import render
from django.contrib.postgres.search import SearchVector,SearchQuery,SearchRank
from django.views.generic import ListView,FormView
from .models import Post
from .forms import *
# Create your views here.
class HomepageView(FormView):
template_name = 'selling/home.html'
form_class = SearchForm
class Search(ListView):
model = Post
template_name = 'selling/search.html'
def get_queryset(self):
query = self.request.GET.get('q')
posts = Post.objects.annotate(
search=SearchVector('title','description'),).filter(search=SearchQuery(query))
return posts
模型.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
date_posted = models.DateTimeField(default=timezone.Now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
book_author = models.CharField(max_length=30)
phone_contact = models.CharField(max_length=20)
price = models.DecimalField(max_digits=7,decimal_places=2)
postal_code = models.CharField(max_length=20)
def __str__(self):
return self.title
Forms.py
from django import forms
class SearchForm(forms.Form):
q = forms.CharField(label='Search',max_length=50)
搜索.html
{% extends "selling/base.html" %}
{% load static %}
{% block content %}
<div class="container pt-5 pb-5">
<div class="ui divided items">
{% for item in posts %}
<div class="item">
<div class="image">
<img src="{% static 'selling/images/brebeuf.png' %}">
</div>
<div class="content item-container">
<a class="header item-title">{{ item.title }} </a><b class="item-price-right">${{ item.price }}</b>
<div class="Meta">
<span>{{ item.postal_code }}   |   {{ item.date_posted|date:"d/m/Y" }}</span>
</div>
<div class="description item-description">
<p>{{ item.description }}</p>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock content %}
home.html
{% extends "selling/base.html" %}
{% load static %}
{% block content %}
<form action="{% url 'search' %}" method='get'>
{{ form }}
</form>
{% endblock content %}
settings.py - 已安装的应用
INSTALLED_APPS = [
'selling.apps.SellingConfig','users.apps.UsersConfig','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django.contrib.postgres',]
urls.py
from django.urls import path
from .views import Search,HomepageView
urlpatterns = [
path('',HomepageView.as_view(),name='sell-home'),path('search/',Search.as_view(),name='search'),]
这就是全部代码。如果您需要其他任何东西,请随时询问。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)