구독 카운트 하는 방법

2021년 6월 8일 10:16 오후

favorite

4

comment

7

USE


안녕하세요 강사님,

동영상 강의의 친절한 설명으로 많은 것을 배우고 있습니다.

제가 또 궁금한 것은 동영상에서 해주신 것 외에 추가로 구현해 보고 싶은게 있다면, 구독하고 있는 갯수를 카운트 해보고 싶은데 잘 안되고 있습니다.

이 경우에는 어떤 것을 어떻게 코드를 해줘야 하는건가요?

답변 기다리겠습니다. 

감사합니다.


favorite 4
thumb_down 1
kakao_story_share kakao_story_share kakao_story_share

fast_forward 다음글이 없습니다.
fast_rewind 이미지 infinite scroll 문의

yesman_1114

2021년 6월 9일 1:57 오전

favorite

2

안녕하세요!

해당 기능은 특정 유저의 Subscription을 필터링한 후에 해당 개수를 카운트하는 방식이면 구현이 가능할 것 같은 생각이 듭니다.

뷰 단이 아니라 템플릿단에서 모든 로직을 처리하시려 하신걸까요?

혹시 어떤 방식으로 접근하셔서 어려움을 겪으셨는지 여쭤봐도 될까요?

USE

2021년 6월 9일 9:40 오전

favorite

2

답변 감사합니다,

뷰단에서 로직을 처리하고 싶은데 view 단에서 queryset으로 접근을 해야할까요?
아니면 filter로 걸러야 할까요?

아직 초보라 강사님께서 올려주신 강의를 끝내고 강사님처럼 profileapp에 구독 수를 넣으려고 했거든요..

강사님께서는 어떻게 접근을 하셨는지 궁금합니다.

yesman_1114

2021년 6월 9일 12:02 오후

favorite

0

View 단에서 문제를 해결하는 것은 문제가 크게 어렵지는 않을듯 합니다.

일단 저희 Subscription 의 내용은 유저와 프로젝트가 연결되어 있습니다.

그렇기 때문에
Subscription.objects.filter(user=xxx)
와 같은 형식으로 구독을 필터링 한 이후에
해당 쿼리셋의 개수를 확인하면 되지 않을까 생각합니다.

저희가 강좌에서 filter 문을 사용하다 보니 queryset 과 혼동을 하시는 듯 한데,
filter 문 자체도 queryset을 만들기 위한 하나의 API 입니다.

저희가 사용한 구문 말고도 정말 많은 queryset을 추려내기 위한 구문이 있습니다.

https://docs.djangoproject.com/en/3.2/topics/db/queries/#retrieving-objects
장고의 문서를 참고하시면
어떻게 object 들을 걸러내는지에 대한 정보를 더 자세히 확인하실수 있을거에요.

USE

2021년 6월 9일 5:56 오후

favorite

2

답변 감사합니다.
한번 다시 시도해보고 혹시라도 계속 막히면 다시 여쭤보겠습니다 :)

USE

2021년 6월 9일 11:20 오후

favorite

2

강사님,
subscriptionapp/view.py 에서

@method_decorator(login_required, 'get')
class SubscriptionListView(ListView):
model = Article
context_object_name = 'article_list'
template_name = 'subscriptionapp/list.html'
paginate_by = 5

def get_queryset(self):
projects = Subscription.objects.filter(user=self.request.user).values_list('project')
article_list = Article.objects.filter(project__in=projects)

return article_list

def get_num_of_subscription(request):
count = Subscription.objects.filter(user=request.user).values_list('project').count()
context = {'count': count}

return render(request, 'accountapp/detail.html', context)

로 return 하여 accountapp/detail.html에서 {{ context }} 로 호출을 했는데 불러오질 못하더라구요. 혹시 제가..어떤 부분을 놓쳤을까요?

USE

2021년 6월 16일 8:56 오전

favorite

3

강사님 바쁘신가요?^^;

yesman_1114

2021년 7월 4일 1:18 오후

favorite

3

흐윽 ㅠㅠ
제가 너무 바빠서 확인을 못했습니다.

저를 호출하시려면 댓글에 좋아요를 눌러주시면
제가 알림받아서 확인해볼수 있어요.

get_num_of_subscription 메서드를 새로 만들어주셨는데,
해당 메서드를 어디서 불러주고 있는거죠?
get 메서드에서 해당 count 에 해당하는 값을 넘겨주어야 하는것 같은데,
작성해주신 코드에서는 get 방식으로 받았을때 따로 해주는 작업이 없어보입니다.

get 메서드를 받아서 처리하면서,
그 도중에 get_num_of_subscription 메서드를 호출하고,
해당 값을 template 단으로 보내주는 작업을 작성해주셔야할 것 같습니다.

ㅠㅠ답변이 너무 늦어버렸네요.
제가 타지에서 전일제 강사를 하고 있는중이라 신경을 쓰지 못한점 죄송합니다.
그래도 찾아주셔서 감사하고
좋은하루 보내시길 바래요!


로그인