Django выбрать вариант размера коробки - PullRequest
2 голосов
/ 30 мая 2009

У меня есть три выпадающих списка выбора, которые мне нужно расширить из соображений видимости в Интернете, с опцией size = ''. Если я выбираю опцию из каждого ящика, я не получаю ошибок, но если я оставляю один или несколько ящиков без выбора, я получаю ошибку:

<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 Ответ

1 голос
/ 30 мая 2009

вы можете окружить циклы for оператором if, если какой-либо из ваших списков пуст.

Например,

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

Наконец, в представлении вы можете проверить, находится ли опубликованный элемент в словаре запросов.

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

----- Обновление -----

Во-первых, вы должны использовать django формы для этого. Во-вторых, вы должны использовать 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']

В противном случае, если у вас нет значения по умолчанию, вы, очевидно, не сможете получить объект 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...