#python #django
#python #django
Вопрос:
Я хочу отображать последние новости на одной странице отдельно, а все остальные ниже, но я не знаю, как это можно сделать.
views.py
class PostsView(ListView):
model = Post
queryset = Post.objects.all().order_by('-date')
template_name = 'post/posts.html'
urls.py
urlpatterns = [
path('', views.PostsView.as_view()),
path('<int:pk>', views.PostView.as_view()),
path('add/', views.PostFormView.as_view(), name='add'),
]
Комментарии:
1. Ну, почему бы просто не написать два набора запросов, один для запроса последнего сообщения, а другой для запроса всех сообщений?
Ответ №1:
Если вы хотите размещать их на отдельных страницах, у вас должны быть два отдельных представления и URL-адреса, например:
Все новости:
class PostsViewAll(ListView):
model = Post
queryset = Post.objects.all().order_by('-date')
template_name = 'post/posts_all.html'
Последние новости:
class PostsViewLatest(ListView):
model = Post
queryset = Post.objects.all().order_by('-date')[:5]
template_name = 'post/posts_latest.html'
И отдельные URL-адреса:
urlpatterns = [
path('all', views.PostViewAll.as_view()),
path('latest/', views.PostViewLatest.as_view()),
]
Или, если вы хотите разместить их на одной странице, у вас есть только одно представление и URL, и вы можете перезаписать get_context_data
, чтобы получить разные наборы запросов.
Ответ №2:
Как сказано в комментарии, вы можете создать два набора запросов. вот так:
Для всех сообщений:
queryset = Post.objects.all().order_by('-date')
Для последних сообщений:
queryset2 = queryset[:5]