2016-02-12 3 views
0

который является причиной этой ошибки ?? Я использую django1.9 и Джанго-стог == 2.4.1python - Haystack + Django 1.9 + Ошибка Elasticsearch

(venv)[email protected]:~/prototipos/venv/ejemplo/exp$ python manage.py update_index 

Indexing 2 documents 
/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/fields.py:137: RemovedInDjango110Warning: render() must be called with a dict, not a Context. 
    return t.render(Context({'object': obj})) 

ERROR:root:Error updating art using default 
Traceback (most recent call last): 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label 
    self.update_backend(label, using) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/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 "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 96, in do_update 
    backend.update(index, current_qs, commit=commit) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 193, in update 
    bulk(self.conn, prepped_docs, index=self.index_name, doc_type='modelresult') 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 188, in bulk 
    for ok, item in streaming_bulk(client, actions, **kwargs): 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 160, in streaming_bulk 
    for result in _process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs): 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 132, in _process_bulk_chunk 
    raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors) 
BulkIndexError: (u'2 document(s) failed to index.', [{u'index': {u'_type': u'modelresult', u'_id': u'art.document.1', u'ok': True, u'_version': 4, u'_index': u'haystack'}}, {u'index': {u'_type': u'modelresult', u'_id': u'art.document.2', u'ok': True, u'_version': 4, u'_index': u'haystack'}}]) 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line 
    utility.execute() 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 183, in handle 
    return super(Command, self).handle(*items, **options) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 548, in handle 
    label_output = self.handle_label(label, **options) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 188, in handle_label 
    self.update_backend(label, using) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/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 "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 96, in do_update 
    backend.update(index, current_qs, commit=commit) 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 193, in update 
    bulk(self.conn, prepped_docs, index=self.index_name, doc_type='modelresult') 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 188, in bulk 
    for ok, item in streaming_bulk(client, actions, **kwargs): 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 160, in streaming_bulk 
    for result in _process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs): 
    File "/home/daniel/prototipos/venv/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 132, in _process_bulk_chunk 
    raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors) 
elasticsearch.helpers.BulkIndexError: (u'2 document(s) failed to index.', [{u'index': {u'_type': u'modelresult', u'_id': u'art.document.1', u'ok': True, u'_version': 4, u'_index': u'haystack'}}, {u'index': {u'_type': u'modelresult', u'_id': u'art.document.2', u'ok': True, u'_version': 4, u'_index': u'haystack'}}]) 

ответ

0

EDIT: вы можете использовать последнюю версию с GitHub v2.5, которая имеет эти изменения или сделать их самостоятельно. В конечном счете это не сводится к ссать плохую обработку ошибок в файле models.py, где они отловить исключение без регистрации и продолжать с моделью = None


кажется стог 2.4 не Django 1.9 совместимых. Я это исправил, удалив функцию контекста и возвращение Dict только то:

in fields.py Line 137 

Before: 
return t.render(Context({'object': obj})) 

After: 
return t.render({'object': obj}) 

Для этого вам нужно будет напрямую редактировать исходный код сайта-пакет - если вы используете Virtual Env, и вы должны быть ., а затем просто идти ENV/Библиотека/питон */сайт-пакеты/стог

Другие вопросы, которые я наткнулся на:

in urls.py 
After: 
    urlpatterns = [ 
     url(r'^$', SearchView(), name='haystack_search'), 
    ] 

-

in forms.py Line 110 and in Models.py line 103 and morelikethis.py line 35: 

before: 
self._model = apps.get_model(self.app_label, self.model_name) 

after: 
from django.apps import apps 
self._model = apps.get_model(self.app_label, self.model_name) 
+0

Вы также должны быть осторожны, если используете Elasticseach> = 2.X, потому что Haystack несовместим с ним. – primoz

+0

Кажется, что он работает после исправлений выше. – pypypy

+0

@pypypyI пытались выяснить, почему я не могу использовать results.objects.get_absolute_url после того, как ваши исправления будут работать? и я замечаю, что вы упомянули о том, что находитесь в виртуальной среде. не будет ли это работать? – losee