/ / Znajdź poprzednie i następne elementy w zestawie zapytań Django, biorąc pod uwagę element - django, django-models, django-queryset

Znajdź poprzednie i następne elementy w zapytaniu Django, biorąc pod uwagę element - django, django-models, django-queryset

Więc buduję blog w Django, ale mam zamrożenie mózgu.

Jestem na widoku szczegółów BlogPost i muszę opracować poprzednie i następne posty, aby móc zaoferować je jako opcje nawigacji po treści posta. W związku z tym pytaniem mam dwie rzeczy:

  • Instancja BlogPost
  • Zestaw zapytań wszystkich blogów, konsekwentnie zamawiany przez when (datetime) pole.

Nie mam indeksu posta na blogu wzapytanie, ani nie brzmi dobrze, aby zeskanować cały zestaw zapytań dla mojego pierwszego posta na blogu. Czy istnieje inteligentny i niedrogi sposób na uzyskanie obiektów po obu stronach danej (jeśli nie wiesz, od czego to się zaczyna)?

Odpowiedzi:

3 dla odpowiedzi № 1
Model.get_next_by_FOO  # get_previous_by_FOO

Lekko niedoświetlone przez Django dokumentacja, ale przydatne:

Dla każdego pola DateField i DateTimeField, które to robinie ma wartości null = True, obiekt będzie miał get_next_by_FOO () i get_previous_by_FOO () metody, gdzie FOO to nazwa pola. Zwraca następny i poprzedni obiekt w odniesieniu do pola daty, podnosząc wartość DoesNotExist wyjątek, gdy jest to właściwe.