inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

안녕하세요 선생님 DRF 대댓글에 대해서 질문드립니다!!

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요 선생님 DRF 대댓글에 대해서 질문드리려고 합니다. 제가 원하는 대댓글 구현은 계층형인데요 (물론 요즘은 잘 안쓰는걸로 알고있지만;;) 예를 들어 (reddit이랑 댓글 구현이 정확히 일치합니다!! -> 계층형 댓글로 구현이 되있습니다) 댓글 -대댓글 --대대댓글 --대대댓글 -대댓글 --대대댓글 댓글 -대댓글 -대댓글 댓글 ... 위와 같이 어떠한 포스트글에 댓글, 대댓글 전부 한번에 보이게 구현을 하고 싶은데 보통 대댓글도 결국 댓글이라서 self join하자나요? class Comment(TimestampedModel): author = models.ForeignKey(User, on_delete=models.CASCADE) post = models.ForeignKey(Post, on_delete=models.CASCADE, verbose_name='포스트 제목') message = models.TextField(verbose_name='댓글') parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True) 근데 문제는 pagination이 걸려 있다보니깐 어떠한 댓글에 대댓글, 대대댓글을 저렇게 정렬된 상태로 한번에 가져오는 방법이 떠오르지가 않네요; (댓글에 좋아요도 추가해서 정렬 알고리즘을 추가할 예정입니다) 그래서.. 1. pagination을 풀어서 어떠한 포스트에 댓글을 전부 response하고 클라이언트 단에서 정렬하라고 하는건지? (물론 당연히 DB 부담이 커서 처음엔 이 방법을 전혀 생각하고 있지 않았지만, 한편으로는 댓글은 많아봐야 몇천개라서 커버가 될 수있을까 ? 라는 막연한 생각이드네용) 2. 댓글 하나당 대댓글이 있는지 재귀적으로 요청해서 대댓글이 있으면 가져오고 없으면 넘어가는 식으로 구현? (물론 당연히 이것도 하나의 포스트에 여러번의 DB 요청을 하기 때문에 서버측에서 굉장히 부담이 커서 현실성이 매우 떨어짐) 위 두 방법은 좀 현실성이 떨어져서 좀 더 효과적으로 구현할 수 있는 방법이 있을것같은데 실력과 경험부족으로 떠오르지가 않네요... 혹시 위 처럼 계층형 대댓글을 구현하는데 좋은 로직이나 자료나 솔루션이 있을까요???? (프론트엔드는 코틀린입니다)

  • 댓글
  • 대댓글
  • python
  • django
  • drf
  • comment
  • docker
  • react
댓글 1 좋아요 0 조회수 756

DRF 1:N 참조 테이블 객체 매핑 POST

미해결

Django REST Framework 핵심사항

안녕하세요. 현재 drf 를 사용하여 api 개발을 공부중입니다. 현재 1:n 관계인 두개의 테이블에서 N측 테이블의 데이터를 저장할 때 기존에 존재하던 1측 테이블의 레코드와 관계를 생성하여 매핑하고자 합니다. 이런 저런 방법을 계속 시도하였으나 참조하는 테이블의 객체를 알맞게 매핑하는데 자꾸 실패하여 질문을 남깁니다. class Company(models.Model): company_name = models.CharField(max_length=30) nationality = models.CharField(max_length=20) region = models.CharField(max_length=40) class Recruitment(models.Model): company = models.ForeignKey(Company, on_delete=models.CASCADE) position = models.CharField(max_length=20) reward = models.IntegerField() info = models.TextField() skill = models.CharField(max_length=30) Company 모델과 이를 참조하는 Recruitment 모델입니다 class CompanySerializer(serializers.ModelSerializer): class Meta: model = Company fields = '__all__' class RecruitmentSerializer(serializers.ModelSerializer): company = CompanySerializer() class Meta: model = Recruitment fields = '__all__' depth = 1 각 모델의 serializer입니다, class RecruitmentListView(APIView): def post(self, request): company_obj = Company.objects.get(pk=request.data.get('company')['id']) #1. 참조하는 company 객체를 찾아 새로운 Recruitment 객체를 생성하고, company 객체를 연결지어 serialize한다 #2. RecruitmentSerializer의 is_valid 혹은 다른 메소드를 오버라이딩하여 request를 serializer로 전달하여 저장한다 #기타 등등 if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(status=status.HTTP_400_BAD_REQUEST) 공식 문서, 유튜브 영상, 외국 사이트등을 찾아보았지만 기존에 존재하던 테이블을 참조하며 새로운 객체를 저장하는 방법이 있질 않더군요... 혹시 해결 방법을 아시면 답변 부탁드리겠습니다. 참고로 request는 { "company" : { "id" : 1 , "company_name" : "company1" , "nationality" : "korea" , "region" : "seoul" }, "position" : "백엔드" , "reward" : 100000 , "info" : "test" , "skill" : "django" } 이런식으로 생각하고 있습니다

  • drf
  • django
  • rest-api
Jay 댓글 1 좋아요 0 조회수 391

DRF 객체 저장시 nested object 매핑 문제

미해결

안녕하세요. 현재 drf 를 사용하여 api 개발을 공부중입니다. 현재 1:n 관계인 두개의 테이블에서 N측 테이블의 데이터를 저장할 때 기존에 존재하던 1측 테이블의 레코드와 관계를 생성하여 매핑하고자 합니다. 이런 저런 방법을 계속 시도하였으나 참조하는 테이블의 객체를 알맞게 매핑하는데 자꾸 실패하여 질문을 남깁니다. class Company(models.Model): company_name = models.CharField(max_length=30) nationality = models.CharField(max_length=20) region = models.CharField(max_length=40) class Recruitment(models.Model): company = models.ForeignKey(Company, on_delete=models.CASCADE) position = models.CharField(max_length=20) reward = models.IntegerField() info = models.TextField() skill = models.CharField(max_length=30) Company 모델과 이를 참조하는 Recruitment 모델입니다 class CompanySerializer(serializers.ModelSerializer): class Meta: model = Company fields = '__all__' class RecruitmentSerializer(serializers.ModelSerializer): company = CompanySerializer() class Meta: model = Recruitment fields = '__all__' depth = 1 각 모델의 serializer입니다, class RecruitmentListView(APIView): def post(self, request): company_obj = Company.objects.get(pk=request.data.get('company')['id']) #1. 참조하는 company 객체를 찾아 새로운 Recruitment 객체를 생성하고, company 객체를 연결지어 serialize한다 #2. RecruitmentSerializer의 is_valid 혹은 다른 메소드를 오버라이딩하여 request를 serializer로 전달하여 저장한다 #기타 등등 if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(status=status.HTTP_400_BAD_REQUEST) 공식 문서, 유튜브 영상, 외국 사이트등을 찾아보았지만 기존에 존재하던 테이블을 참조하며 새로운 객체를 저장하는 방법이 있질 않더군요... 혹시 해결 방법을 아시면 답변 부탁드리겠습니다. 참고로 request는 { "company" : { "id" : 1 , "company_name" : "company1" , "nationality" : "korea" , "region" : "seoul" }, "position" : "백엔드" , "reward" : 100000 , "info" : "test" , "skill" : "django" } 이런식으로 생각하고 있습니다

  • django
  • drf
  • 1:n
Jay 댓글 0 좋아요 0 조회수 260

Throttle 설정이 적용되지 않아요

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

안녕하세요! 강의 잘 듣고 있습니다. DRF 최대 호출 횟수 제한 강의를 보고 적용해보기 위해서 다음과 같이 settings.py를 수정하였는데 리퀘스트 제한이 걸리지 않습니다. 서버를 리스타트해봐도 해결이 안되는데 뭐가 문제일까요? settings.py 소스코드 일부 REST_FRAMEWORK = { 'PAGE_SIZE' : 20 , 'DEFAULT_PAGINATION_CLASS' : 'rest_framework.pagination.PageNumberPagination' , 'DEFAULT_PERMISSION_CLASSES' : [ 'rest_framework.permissions.IsAuthenticated' , ] , 'DEFAULT_THROTTLE_CLASSES' : [ 'rest_framework.throttling.UserRateThrottle' , # 'rest_framework.throttling.AnonRateThrottle', ] , 'DEFAULT_THROTTLE_RATES' : { 'user' : '3/day' , # 'anon': '3/day', } , } httpie Response 메시지

  • throttle
  • react
  • throttling
  • django
  • docker
  • drf
  • python
sh007.jeong 댓글 4 좋아요 0 조회수 478

실습 중 POST 의 경우에 에러 메세지가 출력됩니다

미해결

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

강사님 안녕하세요~~~ 다름이 아니라, 뒷 부분 실습을 따라서 진행하던 중에 첨부드린 사진과 같이 http --auth user2:1234 http://localhost:8000/post/1/ 는 잘 실행되는데 http --auth user2:1234 http://localhost:8000/post/1/ http --auth user2:1234 POST http://localhost:8000/ message="user 2가 생성하는 첫번째 포스팅" 이렇게 POST를 하면 에러가 발생을 하는 것을 볼 수 있었습니다. ...중략 (아주 긴 에러 메세지가 등장합니다.) 문제의 원인이 무엇인지 잘 모르겠어서 이렇게 질문을 남겨드립니다. ㅠㅠ !! 혹 강사님께서 보이시는 문제점을 알려주시면 감사할 것 같습니다. 그럼 정말 감사합니다.

  • drf
  • django
  • react
  • api
  • post
  • docker
  • python
ceng99 댓글 1 좋아요 0 조회수 760

진석님 안녕하세요! 질문이 있습니다!!

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

진석님 안녕하세요! 진석님이 올려주신 강의를 들으며 개발을 시작했고 django로 취업한 개발자 입니다ㅎ 다름이 아니라 재직중인 회사에서 DRF를 사용하고 있지 않아 도입을 해보자고 이야기하고 있는데 사용시 비용을 지불해야 한다는 말씀을 회사에서 하셔서 제가 알고 있는 정보와는 다른 부분이 있어 혹시 아시는 부분이 있는지 여쭤보려 합니다.! DRF는 BSD 라이센스인것으로 알고 있는데 혹시 제가 알고 있는 부분가 다른 정보가 있을까요..?? 강의와는 관련 없는 질문이라 죄송하지만.. 진석님이 올려주신 강의보고 DRF를 너무나도 사용하고 싶어 이렇게 질문은 남기게 됬습니다.!

  • drf
  • django
  • react
  • docker
  • python
택시짱 댓글 1 좋아요 1 조회수 201

인기 태그

인프런 TOP Writers

주간 인기글