Исключение при использовании фильтра для извлечения модели Django - PullRequest
0 голосов
/ 09 декабря 2010

Чтобы получить объект django, я использую функцию фильтра следующим образом:

product = Product.objects.filter(code=request.POST['code'])

Затем, когда я пытаюсь получить доступ к найденному объекту, как:

product[0].description

Я получаюисключение «индекс списка вне диапазона».Хотя фильтр действительно возвращает объект, потому что вызов len (product) показывает «1».

Однако, если я жестко закодирую значение кода (полученное из поста выше), я не получу исключения.Все, что я хочу сделать, это получить доступ к объекту продукта на основе кода.

Использование Product.objects.get также не работает ...

Любая помощь будет оценена.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Вам, вероятно, следует проверить, что request.POST['code'] является действительным, прежде чем пытаться использовать его в чем-либо:

# code will be None if it isn't found in request.POST
code = request.POST.get('code')
if code:
    products = Product.objects.filter(code=code)
    for product in products:
        print product.description

Надеюсь, это немного поможет.

0 голосов
/ 10 декабря 2010

Это не ответ, но в этом случае, когда результаты не имеют смысла, обычно пора вывести отладчик (либо pdb, либо предпочтительно ipdb).

import ipdb;ipdb.set_trace()

Тогда посмотрите на товар. Что на самом деле это? Посмотрите на request.POST ['code'] и посмотрите, что отличается от простой передачи литерала. Также было бы интересно узнать, что на самом деле делает попытка использовать 'get'. Вы говорите, что это не работает, но что на самом деле делает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...