본문 바로가기
소프트웨어 마에스트로/BackEnd(Django)

[백엔드] nested serailizer, lexorank 적용기 2차..

by alpakaka 2024. 7. 22.

 

nested 로 아래와 같이 만들고 싶다면

{
	"id" : 1,
    "books" : [
    	"id": 1,
        "title" : "책이름",
    ]
}

 

models.py 에 해당 foreignkey 에 속하는 속성의 뒤에 related_name 속성을 설정한다

serailizer 에서 realated_name 에서 설정한 이름으로 부른다

예시로

이런식으로 불렀다면

이런식으로 설정해주면 된다 (todo 및에 subtodo가 있는 형태)

 

그러면 잘 뜬다!

참고했던 블로그 

https://pyh0502.tistory.com/55

 

Nested Serializer - Django Rest Framework

현재 공모전에서 모바일 애플리케이션을 개발하면서 DRF를 활용하여 REST API를 만들고 있다. 하나의 Reivew에 여러 Tag들이 들어가는 기능을 개발하고 있고 그에 따라 Review 테이블은 Tag 테이블과 1:N

pyh0502.tistory.com

정말 감사합니다 :)

--

 

일단 이건 이렇게 끝냈는데..

lexorank로 호기롭게.. npm 에 있는 라이브러리로 프론트에서 계산해서 넘겨주면 백엔드는 db 에 넣는 방식으로 적용하려 했는데 멘토님의 피드백이 있었다..

-- 백엔드에서는 검증을 해야하지 않을까요?

 

검증을 생각을 못했다...

그래서 좌충우돌 다시 파이썬으로 된 lexorank 를 찾아보는 중이다.

그래도 일단 나는 최대한 일을 줄이고 일정을 맞추고 싶기 때문에 생각하는 바는 다음과 같다

** 희망회로 ** 
프론트에서 일단 계산해준다 -> 
백엔드는 프론트의 결과를 받는다.
백엔드에서는 정말 간단하게 연산한다.
	예시로 뭔가 aaac 를 받았다!
    그러면 프론트로 부터 앞의 todo 와 뒤의 todo의 id를 받는다
    그러면 백엔드에서는 앞뒤의 todo order 를 찾아서..!
    그 order들 사이에 속하는지 확인한다.
    만약 속하지 않으면 400 에러 (order) 에러를 띄워주면 되지 않을까..?
   
** 이렇게 생각한 이유 **
1. 계산을 한다고 해도 next, prev의 범위가 다를 수 있지 않을까..?
	일단 생각한 바로는 Npm 에서 다운로드 받은 라이브러리는 간단하게 lexorank.genNext() 로 호출이 되는데..
	내가 만든 애도 같은 간격으로 작동할까..? -> 물론 저 라이브러리를 참고하기 때문에 맞을 수 있다!
	그치만! 검증이 그정도로 정확해야하나..?

2. 과연 내가... 이번 7월 내에 완성할 수 있을까...
	ts -> python 이라지만.. 그치만..

 

이런 고민을 하며 lexorank (python) 라이브러리를 찾고 있다...

열심히 해봐야지..