没有名为'django.contrib.postgres.search'的模块错误

时间:2018-03-11 18:47:32

标签: python django postgresql

尝试在Django中构建全文搜索视图,但在尝试运行服务器时收到此错误消息:

No module named 'django.contrib.postgres.search

我刚刚将我的数据库从sqlite切换到postgres,所以不确定该移动中是否存在某种错误

这是我的完整堆栈跟踪

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x06B2D1E0>
Traceback (most recent call last):
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception
    six.reraise(*_exception)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\apps\registry.py", line 115, in populate
    app_config.ready()
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\debug_toolbar\apps.py", line 15, in ready
    dt_settings.patch_all()
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\debug_toolbar\settings.py", line 243, in patch_all
    patch_root_urlconf()
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\debug_toolbar\settings.py", line 231, in patch_root_urlconf
    reverse('djdt:render_panel')
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\urlresolvers.py", line 568, in reverse
    app_list = resolver.app_dict[ns]
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\urlresolvers.py", line 360, in app_dict
    self._populate()
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\urlresolvers.py", line 293, in _populate
    for pattern in reversed(self.url_patterns):
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\urlresolvers.py", line 417, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\functional.py", line 33, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\urlresolvers.py", line 410, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "C:\Users\crstu\Desktop\JSPROJ\dealmazing\dealmazing\urls.py", line 29, in <module>
    url(r"^deals/", include("deals.urls", app_name="deals", namespace="deals")),
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\conf\urls\__init__.py", line 52, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Users\crstu\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "C:\Users\crstu\Desktop\JSPROJ\dealmazing\deals\urls.py", line 3, in <module>
    from .views import *
  File "C:\Users\crstu\Desktop\JSPROJ\dealmazing\deals\views.py", line 2, in <module>
    from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector

我已经三次检查了我在我的视图文件中导入模块的方式,但看起来没问题:

from django.shortcuts import render, redirect
from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
from django.contrib import messages
from django.http import Http404
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView

from accounts.models import User
from .models import *
import datetime


class DealListView(ListView):
    model = Deal
    context_object_name = 'deal_list'
    queryset = Deal.objects.all()
    template_name = 'deal_list.html'

class DealSearchListView(ListView):
    """
    Display a Deal List page filtered by search query
    """
    model = Deal
    paginate_by = 10

    def get_queryset(self):
      qs = Deal.objects.all()
      keywords = self.request.GET.get('q')
      if keywords:
          query = SearchQuery(keywords)
          title_vector = SearchVector('title', weight='A')
          content_vector = SearchVector('description', weight='B')
          vectors = title_vector + content_vector
          qs = qs.annotate(search=vectors).filter(search=query)
          qs = qs.annotate(rank=SearchRank(vectors, query)).order_by('-rank')

      return qs

和我的网址:

from django.conf.urls import url, include
from django.contrib import admin
from .views import *
from dealmazing.views import *
from django.conf import settings

app_name = "deals"

urlpatterns = [

    url(r'^$', DealListView.as_view(), name='deals'),
    url(r'^(?P<slug>[\w-]+)/$', deal_by_detail, name='deal_detail'),
    url(r'^category/(?P<category>\w+)/$', deals_by_category, name='category'),
    url(r'^search/(?P<qs>\w+)/$', DealSearchListView.as_vieW(), name='search_results'),

0 个答案:

没有答案