Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. models.py:
  2.  
  3. class Subject(models.Model):
  4. SUBJECT_CHOICES = ()
  5. name = models.CharField(max_length=20,choices=SUBJECT_CHOICES)
  6.  
  7. def __str__(self):
  8. return self.name
  9.  
  10.  
  11. class Course(models.Model):
  12.  
  13. SKILL_LEVEL_CHOICES = (
  14. ('Beginner', 'Beginner'),
  15. ('Intermediate', 'Intermediate'),
  16. ('Advanced', 'Advanced'),
  17. )
  18.  
  19. slug = models.SlugField()
  20. title = models.CharField(max_length=120)
  21. description = models.TextField()
  22. allowed_memberships = models.ManyToManyField(Membership)
  23. created_at = models.DateTimeField(auto_now_add=True)
  24. subjects = models.ManyToManyField(Subject)
  25. skill_level = models.CharField(max_length=20,choices=SKILL_LEVEL_CHOICES, null=True)
  26. visited_times = models.IntegerField(default=0)
  27.  
  28.  
  29. def __str__(self):
  30. return self.title
  31.  
  32. def get_absolute_url(self):
  33. return reverse('courses:detail', kwargs={'slug': self.slug})
  34.  
  35. @property
  36. def lessons(self):
  37. return self.lesson_set.all().order_by('position')
  38.  
  39. class Meta:
  40. ordering = ('title',)
  41.  
  42. views.py:
  43.  
  44. class CourseListView(ListView):
  45. model = Course
  46. def get_queryset(self):
  47. qs = super().get_queryset()
  48. title_contains_query = self.request.GET.get('title_contains')
  49. view_count_min = self.request.GET.get('view_count_min')
  50. view_count_max = self.request.GET.get('view_count_max')
  51. date_min = self.request.GET.get('date_min')
  52. date_max = self.request.GET.get('date_max')
  53. skill_level_query = self.request.GET.get('skill_level')
  54. if title_contains_query:
  55. qs = qs.filter(title__icontains=title_contains_query)
  56. if view_count_min:
  57. qs = qs.filter(visited_times__gte=view_count_min)
  58. if view_count_max:
  59. qs = qs.filter(visited_times__lte=view_count_max)
  60. if date_min:
  61. qs = qs.filter(created_at__gte=date_min)
  62. if date_max:
  63. qs = qs.filter(created_at__lte=date_max)
  64. if skill_level_query:
  65. qs = qs.filter(skill_level=skill_level_query)
  66. return qs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement