2014-10-19 2 views
0

После перехода на django 1.7, я получаю следующую трассировку после редактирования модели на страницах администрирования (IE, щелкнув запись отдельной модели для доступа к ее деталям)Ошибка при доступе к деталям модели в admin после обновления до django 1.7

Приложение и администратор, похоже, работали после миграции, пока я не пошел на это. Очевидно (?) У меня нет тестов для административной стороны вещей, поэтому я только обнаружил это, когда я попробовал.

Любая идея, что нужно сделать, чтобы исправить это? У меня есть какой-то оставшийся старый шаблон из 1.6, который не поддерживается, или мне не удалось что-то обновить, чтобы он работал правильно с новым?

Exception Type: AttributeError at /admin/cmh_server/module/7/ 
In template /Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_form.html, 
error at line 45 
'AdminErrorList' object has no attribute 'data' 
35  {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%} 
36  {% endblock %} 
37 </ul> 
38 {% endif %}{% endif %} 
39 {% endblock %} 
40 <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %} 
41 <div> 
42 {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %} 
43 {% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %} 
44 {% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %} 
45 {% if errors %} 
46  <p class="errornote"> 
47  {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %} 
48  </p> 
49  {{ adminform.form.non_field_errors }} 
50 {% endif %} 
51 

Полный отслеживающий (жаль, что я мог бы этот пост "рухнул"!)

File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    137.     response = response.render() 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/response.py" in render 
    103.    self.content = self.rendered_content 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/response.py" in rendered_content 
    80.   content = template.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in render 
    148.    return self._render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in _render 
    142.   return self.nodelist.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    126.   return compiled_parent._render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in _render 
    142.   return self.nodelist.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    126.   return compiled_parent._render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in _render 
    142.   return self.nodelist.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    65.     result = block.nodelist.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/base.py" in render 
    844.     bit = self.render_node(node, context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    80.    return node.render(context) 
File "/Users/mgregory/Documents/virtualenvs/cm_central/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    311.    if match: 
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserList.py" in __len__ 
    30.  def __len__(self): return len(self.data) 
Exception Type: AttributeError at /admin/cmh_server/module/7/ 
Exception Value: 'AdminErrorList' object has no attribute 'data' 
+0

Вы сделали: 'python manage.py makemigrations yourappname' и' python manage.py migrate'? вы должны сделать это после обновления с 1.6 до 1.7, makemigrations без appname не исправит это. –

+0

@CherifKAOUA Да, я сделал это. Я проверил только сейчас, запустив его снова, и makemigrations сказал «никаких изменений не обнаружено». В прошлый раз это «делало вещи» :) Я отредактировал свой вопрос, чтобы быть более понятным, когда происходит ошибка. – GreenAsJade

ответ

1

Оказалось, что это произошло из-за устаревшей версии django-inested-inlines.

Подсказка для отладки исходила из вопроса «что такое AdminErrorList?», Что приводит к «тому, что находится в admin.py?», Что приводит к «whoa, что это за штука в вложенных линиях, является ли она совместимой с 1.7 ».

Был недавний фиксатор на django-inested-inlines, который ссылался на обновления, относящиеся к AdminErrorList, и это изменение устранило мою проблему.

+0

Спасибо за полезные вопросы, которые привели меня к возможности отладить это! – GreenAsJade

+0

Можете ли вы указать на фиксацию, которая исправляет эту ошибку? У меня также есть такая же странная ошибка с обновленной установкой django-inested-inlines. – glic3rinu

+1

Я не делюкт, чтобы доказать это, но я думаю, что это одно: https://github.com/silverfix/django-nested-inlines/commit/aeb7a1f84cd41acb8efa66483908f79a2fcd511a. Тем не менее, я просто схватил голову от этого репо, и это сработало для меня. FYI Я сделал вилку, чтобы избавиться от предупреждения об устаревании: https://github.com/GreenAsJade/django-nested-inlines – GreenAsJade

1

Вы, вероятно, получил вторичный отслеживающий. Попытайтесь получить первичный файл непосредственно в командной строке, а не в веб-браузере. Попробуйте воспроизвести ошибку:

python manage.py runserver --traceback --nothreading --noreload 

Только первый вариант очень важен. Другие варианты упрощают отладку.

Ваша ошибка в классе ErrorList. Класс UserList используется только с Django 1.7, а не с любым более старым Django, поскольку он не существовал ни в одном предыдущем Django.

+0

Hah! Вы дали мне хорошее и очевидное напоминание :) Фактически, трассировка, которую я показываю, находится в консоли/журнале, где направляются ошибки. Но у меня не было DEBUG = True (doh!). Я добавлю «основное» сообщение, которое приходит на веб-странице с DEBUG = True, в вопросе. – GreenAsJade

+0

Посредством «вторичной трассировки» я имею в виду, что любая проблема также относится к обработке исключений, отчетности и т. Д. Обычно оба должны быть исправлены. Возможно, первой проблемой был только отсутствующий ввод пользователя для требуемого значения в форме. Весь трассировка состоит только из вложенного рендеринга тегов шаблона. Это не так полезно, как знание другой информации, такой как URL-адрес запроса, get/put, ожидаемый шаблон для него, тип имени самообъекта на каждом уровне трассировки. – hynekcer

Смежные вопросы