Django - ошибка ValueError при рендеринге: list.remove (x): x отсутствует в списке - PullRequest
1 голос
/ 09 июня 2011

У меня есть поле категории в моей форме:

category  = forms.ModelChoiceField(queryset=Category.objects.all().filter(parentCat=None),
                        widget = forms.Select(attrs = { 
                                                      'onchange' : "catChanged(this);", 
                                       )
                                                )              
                                                   }                                                                            

до того, как я добавил фильтр, все было хорошо. Затем я добавил фильтр для запроса всех категорий, у которых parentCat = None. Теперь я получаю эту ошибку:

Тип исключения: TemplateSyntaxError Значение исключения: ошибка ValueError при рендеринге: list.remove (x): x отсутствует в списке

Ошибка в шаблоне, где отображается поле категории: {{form.category}}

<div style="position:relative" >   <label> {{ form.category.label }}:</label> {{ form.category }}</div>

Есть идеи, что вызывает эту проблему?

Обновление: Странное поведение. В первый раз, GET отображает форму, все хорошо; если я обновляюсь, второй раз GET отображает форму, я получаю вышеуказанную ошибку. Чтобы воспроизвести, я должен остановить и перезапустить веб-сервер!

1 Ответ

1 голос
/ 09 июня 2011

Эта ошибка, по-видимому, является ошибкой в ​​Django или адаптации запроса не-rel.

Произошла ошибка в модуле backends.py - apparenlty. Существует проблема с запросом для ForiegnKeys, которые являются нулевыми -

ошибочная строка:

query.table_map[table_name].remove(alias) 

Я изменил ее на

try:
  query.table_map[table_name].remove(alias)
except:
  pass

Это изменение в основном игнорирует любые ошибки в этой строке.Теперь все работает как положено;хотя я не уверен, почему произошла ошибка, это изменение, похоже, исправляет ее.

...