현제의 현재이야기

[KLAE] 1229 개발일지 본문

DRF/KLAE

[KLAE] 1229 개발일지

현재의 현제 2022. 12. 29. 10:12

쿼리셋 관련

 

[Django] Django ORM queryset 정리(model, filter, all, get, filter, exists, create, save)

Django를 하다보면 DB관련 모델링 작업이나 로직을 수행할 때 DB에 대해 직접적으로 SQL쿼리를 이용하여 DB관련 작업을 진행하는 방식이 아닌 django ORM을 통해 DB 테이블을 생성하고, C.R.U.D를 할 수 있

velog.io

  • filter() 함수는 객체를 가져오는 것이 아니라 쿼리셋을 가져온다.
  • 따라서 get() 함수를 사용해야 뽑아온 객체의 애트리뷰트를 이용할 수 있다.
@api_view(['GET'])
def recommend_test(request,pk):
    user = User.objects.get(pk=pk)
    choices = [1, 1, 1, 1] # request.data 실험용
    if choices[0] == 1:
        if choices[1] == 1:
            if choices[2] == 1:
                if choices[3] == 1:
                    result = 'A'
    result_plant = Plant.objects.get(plant_code=result)
    user.select = result_plant.id
    user.save(update_fields=['select'])
    serializer = RecommendSerializer(result_plant)
    return Response(serializer.data)
  • request.data 대신에 임시로 사용자가 선택한 선택지가 배열로 [1, 1, 1, 1] 온다고 가정했다.
  • 일단 pk로 추천을 돌린 User를 불러오고, 거기에 임시로 select 필드에 저장시킨다.
  • 그래서 result_plant의 id를 select에 넣은 뒤, 저장시키고 serialzier로 뱉는다.
class User(AbstractUser):
    name = models.CharField(max_length = 20)
    password = models.CharField(max_length=512)
    email = models.CharField(max_length = 50, unique = True)
    uuid = models.CharField(max_length = 512)
    username = models.CharField(max_length = 20, unique=True)
    select = models.CharField(max_length=50, null=True)

이렇게 잘 전송된다.

남은 것들

  • 추천에 따른 데이터 넣기
  • 이미지필드 해결하기

+) 추가

#식물추천테스트
@api_view(['GET'])
def recommend_test(request,pk):
    user = User.objects.get(pk=pk)
    result = map(str, [0, 0, 0, 0]) # request.data 실험용
    result = "".join(result)
    result_plant = Plant.objects.get(plant_code=result)
    user.select = result_plant.id
    user.save(update_fields=['select'])
    serializer = RecommendSerializer(result_plant)
    return Response(serializer.data)
  •  if 문 돌리기 너무 귀찮아서 아예 배열 받은 것을 합쳐서, 그것을 plant_code로 만들었다.
  • 이제 데이터베이스에 0000, 0001, 0002, 0003 처럼 코드를 plant_code로 넣으면 된다!

이런 식으로

 

+) 추가2

기존에 us-east로 aws 리전이 설정되어 있어서 northeast 한국으로 바꿨다!

참고한 사이트

 

AWS RDS 프리티어 리전 ( resion, 지역, 영역 ) 서울로 변경 하기 ( DataGrip Query 실행 속도 개선 )

AWS RDS 지역 변경

velog.io

훨씬 빨라졌다! 다행

'DRF > KLAE' 카테고리의 다른 글

[KLAE] 0102 개발일지  (1) 2023.01.02
[KLAE] 1230 개발일지  (0) 2022.12.30
[KLAE] 1228 개발일지  (0) 2022.12.28
[KLEA] 1128 개발일지 (좋아요 기능)  (0) 2022.11.28
[KLEA] 1125 개발일지 (django와 Mysql 연결, GCP)  (0) 2022.11.26
Comments