inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

258

Jay

작성한 질문수 2

0

 
안녕하세요. 현재 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

답변 0

진도미확인 (진도가 안 넘어감)

0

52

1

자료 화면 문의

0

54

1

(질문)KG이니시스 팝업차단 문제 발생(강의 13. 자바스크립트만으로 포트원 결제 구현하기, 7분18초)

1

212

2

강의에 나왔던 js 파일이 깃허브에 없습니다

1

79

1

RuntimeError: There is no current event loop in thread 'MainThread'

0

95

1

chapter 07-01 실행 오류

0

78

1

DOCKER 설치 관련 질문입니다

0

109

2

Chapter05-04 : sum_func의 합이 이중 출력됩니다.

0

90

2

안녕하세요.

0

62

1

asgi 를 elasticbeanstalk 으로 배포는 어떻게 할수 있을까요?

0

99

1

모바일 디버깅, 반응형 레이아웃 4분48초 질문

0

57

1

AI 도구 학습법 문의

0

107

2

45. 병렬성 2 - Futures(5-1) wait가 의도된 대로 동작하지 않습니다.

0

109

2

멀티스레딩 - 44. 병렬성 1 - Futures(4-2)

0

81

2

chapter05_02 클로저 질문사항 !

0

61

1

ConnectionRefusedError: [WinError 10061]

0

119

2

CSRF_COOKIE_NAME에러

0

95

2

Django의 View나 URL의 네이밍 컨벤션

0

75

1

Dockerfile 질문

0

91

2

decorator 관련질문입니다.

0

63

1

로그인 오류

0

88

2

PRINT_SQL=1 py manage.py shell 에러

0

81

2

08-14 FormView 관련 질문

0

90

1

07-01 IPv4AddressIntegerField 질문

0

100

1