losee
losee

Reputation: 2238

try to use haystack and whoosh in django app and it gave me large error

I'm trying to implement haystack and whoosh and when I entered

  ./manage.py rebuild_index

I got this huge error

WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
  Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
  Are you sure you wish to continue? [y/N] y
  Removing all documents from your index because you said so.
  All documents removed.
  Indexing 10 posts
  ERROR:root:Error updating posts using default 
  Traceback (most recent call last):
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label
      self.update_backend(label, using)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 233, in update_backend
      do_update(backend, index, qs, start, end, total, verbosity=self.verbosity, commit=self.commit)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 96, in do_update
      backend.update(index, current_qs, commit=commit)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/backends/whoosh_backend.py", line 196, in update
      doc = index.full_prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/indexes.py", line 212, in full_prepare
      self.prepared_data = self.prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/indexes.py", line 203, in prepare
      self.prepared_data[field.index_fieldname] = field.prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 159, in prepare
      return self.convert(super(CharField, self).prepare(obj))
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 79, in prepare
      return self.prepare_template(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 136, in prepare_template
      t = loader.select_template(template_names)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/template/loader.py", line 74, in select_template
      raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
  django.template.exceptions.TemplateDoesNotExist: search/indexes/posts/post_text.txt
  Traceback (most recent call last):
    File "./manage.py", line 10, in <module>
      execute_from_command_line(sys.argv)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
      utility.execute()
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute
      self.fetch_command(subcommand).run_from_argv(self.argv)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv
      self.execute(*args, **cmd_options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
      output = self.handle(*args, **options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/rebuild_index.py", line 26, in handle
      call_command('update_index', **options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/__init__.py", line 119, in call_command
      return command.execute(*args, **defaults)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
      output = self.handle(*args, **options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 183, in handle
      return super(Command, self).handle(*items, **options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/core/management/base.py", line 548, in handle
      label_output = self.handle_label(label, **options)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label
      self.update_backend(label, using)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 233, in update_backend
      do_update(backend, index, qs, start, end, total, verbosity=self.verbosity, commit=self.commit)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/management/commands/update_index.py", line 96, in do_update
      backend.update(index, current_qs, commit=commit)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/backends/whoosh_backend.py", line 196, in update
      doc = index.full_prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/indexes.py", line 212, in full_prepare
      self.prepared_data = self.prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/indexes.py", line 203, in prepare
      self.prepared_data[field.index_fieldname] = field.prepare(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 159, in prepare
      return self.convert(super(CharField, self).prepare(obj))
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 79, in prepare
      return self.prepare_template(obj)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/haystack/fields.py", line 136, in prepare_template
      t = loader.select_template(template_names)
    File "/Users/ray/Desktop/mypy/trydjango/lib/python3.5/site-packages/django/template/loader.py", line 74, in select_template
      raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
  django.template.exceptions.TemplateDoesNotExist: search/indexes/posts/post_text.txt

also heres my settings.py

WHOOSH_INDEX = os.path.join(BASE_DIR, 'whoosh/')


HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': WHOOSH_INDEX,
    },
}

i'm not sure what exactly is going on. any help as welcomed. Ive been trying to tinker with it but I havent found out exaclty what it is. also I don't see haystack in my site packages like it shows in the paths above

EDIT: I added a post directory inside of indexes and then put post_text.txt inside of it. then the errors went away but now nothing is being returned but it's like an invisibble list is pushing on my css. What's going on here?

In the terminal I'm getting messages like

Model could not be found for SearchResult '<SearchResult: posts.post (pk='20')>'.
Model could not be found for SearchResult '<SearchResult: posts.post (pk='20')>'.
[02/Feb/2016 15:34:11] "POST /posts/search/ HTTP/1.1" 200 32

Upvotes: 0

Views: 234

Answers (1)

d7my
d7my

Reputation: 197

This is simply because use_template=True in your search_indexes.py

make it use_template=False

otherwise, you have to specify your template.

The result of your query is a set of SearchResult objects so, you have to get the model objects.

something like this

sqs = SearchQuerySet().models(Model).load_all().auto_query(query)
orm_objects = orm_objects.filter(pk__in=sqs.values_list('pk', flat=True))
return orm_objects

Upvotes: 2

Related Questions