2010-07-07 3 views
0

Эта линия работает и возвращает значение, которое я ищу:Джанго Вложенный фильтр Значения

logs = Log.objects.filter(filterURI=aFilter.uri).values()[0]['yk'] 

Однако, когда я пытаюсь добавить еще один фильтр и сделать то же самое я получаю ошибки:

logs = Log.objects.filter(filterURI=aFilter.uri).filter(k=k-1).values()[0]['yk'] 

Мое понимание заключается в том, что object.filter возвращает набор запросов, но также делает «фильтр фильтра». Поэтому я должен иметь возможность выполнять вызов «значений» таким же образом, независимо от того, есть ли у меня один фильтр или 1000.

Что я здесь делаю неправильно.

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

+2

Пожалуйста, пост полный отслеживающий, это будет полезно – Ashok

ответ

0

Я не думаю, что ошибка заключается в том, что у вас есть два фильтра - он находится в фактическом втором фильтре. k=k-1 будет работать, только если у вас есть поле модели и локальная переменная с именем k - первая слева от выражения, вторая справа.

Если вы хотите сослаться на поле модели на правой части выражения, используйте F:

.filter(k=(F('k')-1) 
+0

Значение к слева от равного является поле модели, значение справа от знака равенства вычисляется просто k-1 и оно не относится к полю модели. «K» в k-1 передается выше. – Przemek

Смежные вопросы