Django - 渲染时捕获ValueError:list.remove(x):x不在列表中

时间:2011-06-08 23:48:12

标签: django django-templates django-forms

我的表单中有类别字段:

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呈现表单我得到上述错误。要重现,我必须停止并重新启动Web服务器!

1 个答案:

答案 0 :(得分:1)

此错误似乎是Django中的错误或非rel的查询调整。

模块backends.py中发生错误 - 在查询ForiegnKeys时,有一个问题是null -

失败的一行是:

query.table_map[table_name].remove(alias) 

我把它改成了

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

此更改基本上忽略了该行中的任何错误。 一切都按预期进行;虽然我不确定错误发生的原因,但这种改变似乎解决了这个问题。