Django选择框大小选项

时间:2009-05-30 14:46:38

标签: django html-select

我有三个下拉选择框,由于尺寸=''选项,我必须为了网络可见性而展开。如果我从每个框中选择一个选项,我没有收到任何错误,但如果我在没有选择的情况下留下一个或多个框,则会收到错误:

<select id="pathology_id" name="pathology_id" size="5">
    {% for pathology in pathology_list %}
    <option value="{{ pathology.id }}">{{ pathology.pathology }}</option>
    {% endfor %}
</select>

<select id="commodity_id" name="commodity_id" size="5">
    {% for commodity in commodity_list %}
    <option value="{{ commodity.id }}">{{ commodity.commodity }}</option>
    {% endfor %}
</select>

<select id="technology_id" name="technology_id" size="5">
    {% for technology in technology_list %}
    <option value="{{ technology.id }}">{{ technology.technology }}</option>
    {% endfor %}
</select>

ERROR:
MultiValueDictKeyError
Exception Value:    

"Key 'pathology_id' not found in <QueryDict: {u'q': [u''],

如何编码视图以接受没有选择的下拉框?

1 个答案:

答案 0 :(得分:1)

如果您的任何列表为空,则可以使用if语句包围for循环。

例如,

{% if technology_list %}
    {% for technology in technology_list %} {{ technology.technology }} {% endfor %}
{% endif %}

最后,在视图中,您可以查看已过帐项目是否在请求词典中。

if 'technology' in request.POST:
    tech = request.POST['technology']

- - - - 的更新 -----

首先,您应该使用django forms来执行此操作。其次,您应该使用stackoverflow来询问具体问题。您不应该将其用作修复代码的方法。

最后,似乎会抛出以下行的错误:

pathology_id = request.GET['pathology_id']

问题是密钥'pathology_id'不在GET字典中。如果您有此字段的默认值,则可以执行以下操作:

pathology_id = 'default_value'
if 'pathology_id' in request.GET:
    pathology_id = request.GET['pathology_id']

否则,如果您没有默认值,显然无法获取没有ID的Pathology对象。然后,当没有选择任何内容时,您将必须处理该案例。

if 'pathology_id' in request.GET:
    pathology_id = request.GET['pathology_id']

    #rest of your code

else:
    #code when no pathology_id is selected