π many to many field μ λ ¬νκΈ°
class FilterImage(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='filter_user') filter_name = models.CharField(max_length=25) filter_image = models.ImageField(blank=False, upload_to='filter') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) likes = models.ManyToManyField(User, related_name="filter_likes", blank=True) content = models.TextField()
νμ¬ λͺ¨λΈμ μμ κ°μ μνμ΄λ©° likes μμΌλ‘ μ λ ¬νκΈ°λ₯Ό μνλλ° κ·Έκ² μ½μ§ μμλ€.
μ°Ύμ보λ
μλμ κ°μ λ°©λ²μΌλ‘ μ λ ¬μ΄ κ°λ₯νλ€.μ 체μ μΈ view
class FilterView(ListAPIView): pagination_class = Cursor_created serializer_class = FilterallSerializer queryset = FilterImage.objects.all() def get(self, request): sorting_val = self.request.GET.get('sort') # get νλΌλ―Έν° λ΄μ©μ€ sort λ¬Έμμ΄μ λ΄μ©μ κ°μ Έμ΄ if sorting_val == 'recreate': # μ΅μ μ μ λ ¬ self.pagination_class = Cursor_reverse_created if sorting_val == 'like': # μ’μμ μ μ λ ¬ self.pagination_class = Cursor_likes if sorting_val == 'modal': # λͺ¨λ¬ νμ΄μ§μμ filter λͺ©λ‘ μμ² μ self.queryset = FilterImage.objects.annotate(count=Count('likes')).order_by('-count') self.pagination_class = Cursor_likes_modal pages = self.paginate_queryset(self.get_queryset()) # pages λΌλ λ³μμ get_querysetμ μ΄μ©νμ¬ querysetμ κ°μ Έμ€κ³ paginationμ λ£μ΄μ€ slz = self.get_serializer(pages, many=True) return self.get_paginated_response(slz.data)
if λ¬Έμ get url νλΌλ―Έν° μμ²μ λ°λΌ μ΄λ€μμΌλ‘ μ λ ¬ν 건μ§, μ¦ μ΄λ€ νμ΄μ§λ€μ΄μ μ μ¬μ©ν κ²μΈμ§ μ μ΄λ κ²μ΄λ€.
νμ§λ§ cursorpagination μ ordering νλκ° νμμ¬μ querysetμ μ λ ¬νκ³ pagination querysetμ λ£μ΄μ€λ€ ν΄λ λ€μ μ λ ¬μ΄ λμλ€.
μ¬μ§μ΄ likesλ many to many νλμ¬μ ν΄λΉ ν μ΄λΈμ΄ μλ λ€λ₯Έ ν μ΄λΈμ μ°Έμ‘°νμ¬ κ°μ Έμ μ€λ³΅μ΄ μ겨λ²λ Έλ€...
μ΄κ±°λ λ³μ§μ λ€ν΄λ΄€λλ° μλΌμ μΌλ¨ μ€ν...νκ³ λ΄μΌ νκΈ°λ‘ νλ€...many to many field κΈ°μ€μΌλ‘ μ λ ¬νκΈ°
μ μ½λ λ°νμΌλ‘ querysetμ μ λ ¬ ν κ²μ΄λ€.self.queryset = FilterImage.objects.annotate(count=Count('likes')).order_by('-count')
μ΄λ°μμΌλ‘ querysetμ λ°κΎΈμ΄ μ£Όλ©΄ λλ€.
νμ§λ§ μμμ λ§νλ paginate querysetμΌλ‘ λ€μ λ€μ΄κ° pagenumberpaginationμ μ λμμ νμ§λ§ cursorpaginationμ λμμ νμ§ μλλ€...γ γ γ