From 558988e2b3f4cca9a9a10e46c4fbcfaf95f9539a Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Sun, 28 Jan 2018 15:11:43 +0300 Subject: [PATCH 1/2] Add Course ordering by created_at --- apps/course/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/course/models.py b/apps/course/models.py index bc2f48fc..1a9f3963 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -56,6 +56,7 @@ class Course(models.Model): class Meta: verbose_name = "Курс" verbose_name_plural = "Курсы" + ordering = ['-created_at'] class Category(models.Model): From 4f72ca82afd529dc06f3e56e5d78158f8cdd068e Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Sun, 28 Jan 2018 15:13:07 +0300 Subject: [PATCH 2/2] Update CoursesView ajax response --- apps/course/views.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/apps/course/views.py b/apps/course/views.py index bc3761f1..d3f7703c 100644 --- a/apps/course/views.py +++ b/apps/course/views.py @@ -1,4 +1,6 @@ +from django.http import JsonResponse from django.views.generic import ListView +from django.template import loader from .models import Course from .filters import CourseFilter @@ -6,9 +8,33 @@ from .filters import CourseFilter class CoursesView(ListView): model = Course - context_object_name = "course_items" + context_object_name = 'course_items' paginate_by = 6 + def get(self, request, *args, **kwargs): + self.object_list = self.get_queryset() + allow_empty = self.get_allow_empty() + if request.is_ajax(): + context = self.get_context_data() + template_name = self.get_template_names() + html = loader.render_to_string(template_name, context) + is_paginated = context.get('is_paginated') + if is_paginated: + page_obj = context.get('page_obj') + prev_url = '?page=' + str(page_obj.previous_page_number()) if page_obj.has_previous() else None + next_url = '?page=' + str(page_obj.next_page_number()) if page_obj.has_next() else None + else: + prev_url = None + next_url = None + return JsonResponse({ + 'success': True, + 'content': html, + 'prev_url': prev_url, + 'next_url': next_url, + }) + else: + return super().get(request, args, kwargs) + def get_queryset(self): queryset = super().get_queryset() filtered = CourseFilter(self.request.GET, queryset=queryset) @@ -17,4 +43,4 @@ class CoursesView(ListView): def get_template_names(self): if self.request.is_ajax(): return 'course/course_items.html' - return "course/courses.html" + return 'course/courses.html'