Reputation: 2238
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
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