фильтрация только n элементов в модели Django - PullRequest
1 голос
/ 02 апреля 2012

Ну, это простой вопрос, я хочу отфильтровать два элемента, отсортированные по дате.

Модель:

Class ModelName(models.Model):
    usr = models.ForeignKey(UserProfile)
    created = models.DateTimeField(default=datetime.datetime.now)

Как я это делаю:

ModelName.object.filter(param=param).order_by('-created')[:2]

Насколько я понимаю, что происходит за сценой:

  1. Все объекты из ModelName фильтруются

  2. они отсортированы

  3. выбраны только два из них,

Может быть, я ошибаюсь, если нет, то как я могу отфильтровать только последние два элемента по дате.

1 Ответ

0 голосов
/ 02 апреля 2012
  • Все объекты из ModelName фильтруются
  • они сортируются
  • выбраны только два из них.

Да, но это делается базой данных, а не питоном.Смотрите наборы запросов ленивые .Итак, это на самом деле работает довольно хорошо, поскольку весь этот питон:

qs = ModelName.object.filter(param=param).order_by('-created')[:2]

будет преобразован в SQL при обращении к записям qs (т. Е. Для модели в qs ...)

...