(Django) 모델 생성 동시에 역참조 foreign key 대상에 데이터 넣기

jomminii_before·2020년 3월 5일
0

장고 프로젝트를 하다보면 원하는 테이블에 원하는 모델 데이터를 넣고 싶을 때, 해당 모델의 역참조 foreign key에도 데이터를 동시에 넣고 싶을 때가 있습니다.

저 같은 경우 아래와 같이 스타일 카드 모델과 스타일 카드 모델을 참조하고 있는 스타일 이미지 테이블이 있습니다.

지금 작성하려는 뷰는 스타일 카드를 업로드할 때 입력한 데이터를 DB에 저장해주는 뷰인데요, 스타일 테이블의 메인 데이터를 저장할 때 동시에 foreign key 대상 데이터를 저장하지 않으면 번거로운 일이 생깁니다. 저장했던 스타일 id를 다시 불러와서 스타일 이미지를 저장해줘야하거든요.

그래서 애초에 스타일 데이터를 저장할 때 스타일 이미지도 함께 저장해주면 이러한 번거로움을 해결할 수 있습니다.

django orm에서는 create라는 방식으로 데이터를 생성해서 저장할 수 있는데요, 이 방식으로 객체를 만들어낼 때 이 객체를 변수에 저장하면 객체의 정보를 그대로 가져와 쓸 수 있습니다.

style_id = make.id 이런 방식으로 변수로 만들어진 객체에서 원하는 정보를 가져와서 바로 대입시킬 수 있습니다.

참 편리하죠? 여러분도 잘 이용해보세요!

class StyleUploadView(View):
    @login_decorator
    def post(self,request):
        data = json.loads(request.body)
        try:
            make = Style.objects.create(            # 만들자마자 make라는 변수에 style 객체 저장
                description  = data['description'],
                user_id      = request.user.id
            )

            for image in data['image_url_list']:
                StyleImage.objects.create(
                    image_url = image,
                    style_id = make.id              # 스타일 id에 해당하는 변수의 아이디를 바로 불러와서 저장

        except KeyError:
            return JsonResponse({"message": "INVALID_KEYS"}, status = 400)
        return HttpResponse(status = 200)

profile
https://velog.io/@jomminii 로 이동했습니다.

0개의 댓글