Как сделать фильтр меньше или равным в наборе запросов Django?

86

Я пытаюсь фильтровать пользователей по настраиваемому полю в каждом профиле пользователя с именем profile. Это поле называется уровнем и представляет собой целое число от 0 до 3.

Если я фильтрую с использованием equals, я получаю список пользователей с выбранным уровнем, как ожидалось:

user_list = User.objects.filter(userprofile__level = 0)

Когда я пытаюсь фильтровать с использованием менее:

user_list = User.objects.filter(userprofile__level < 3)

Я получаю сообщение об ошибке:

глобальное имя 'userprofile__level' не определено

Отходит ли фильтр на < или > , или я лаяю неправильное дерево.

  • 3
    Вы пытались просмотреть - превосходную - документацию, чтобы увидеть, каков синтаксис фильтра в Django? docs.djangoproject.com/en/1.4/ref/models/querysets/#gt
  • 1
    @ BéresBotond Хотя документы выглядят великолепно - структура и структура настолько скудны, что без прямой ссылки они практически бесполезны
Показать ещё 2 комментария
Теги:
django-queryset

1 ответ

171
Лучший ответ

Меньше или равно:

User.objects.filter(userprofile__level__lte=0)

Больше или равно:

User.objects.filter(userprofile__level__gte=0)

Аналогично, lt меньше и gt для большего. Вы можете найти их в в документации.

  • 2
    Вау, это было быстро :). Это прекрасно работает для меньше или равно, но как насчет чуть меньше? (userprofile__level__lt = 3), похоже, не работает
  • 0
    Почему бы и нет. Оно делает.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню