Django - поймал ValueError при рендеринге: list.remove(x): x не в списке

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

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

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

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

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

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

Любые идеи, что вызывает эту проблему?

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


person afshin    schedule 08.06.2011    source источник
comment
Я предполагаю, что это проблема форматирования, но вам не хватает закрывающего } в form.Select(...)   -  person Timmy O'Mahony    schedule 09.06.2011
comment
Я решил, что есть обходной путь - ошибка была в backends.py - apparenlty non-rel для appengine имеет проблему с ForiegnKeys, которые являются нулевыми - ошибочная строка была: query.table_map[table_name].remove(alias) Я добавил попытку: и пройти за исключением - все, кажется, работает хорошо   -  person afshin    schedule 09.06.2011


Ответы (1)


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

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

неудачная строка была:

query.table_map[table_name].remove(alias) 

я изменил его на

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

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

person afshin    schedule 09.06.2011