프로젝트를 여러 명이 함께 진행하다보니 각 팀원이 서로 다른 앱을 구현하게 되는데,
이 때 다른 앱의 모델 필드를 외래키로 사용하거나 모델 자체를 내 앱에서 사용하는 경우
어떻게 사용하면 되는지에 대한 내용을 다뤄보려고 한다.
편의상 내 앱의 이름은 'myapp', 다른 팀원의 앱 이름은 'yourapp'으로 서술하도록 하겠다.
모델들의 내용은 다음과 같다.
# myapp/models.py
class Review(models.Model):
...
userId = models.ForeignKey(User, on_delete=models.CASCADE)
...
# yourapp/models.py
class User(models.Model):
...
Review 모델에서는 User 모델을 외래키로 사용하지만 내가 만든 앱에는 해당 모델이 존재하지 않고
팀원이 만든 모델의 내용은 yourapp/models.py 파일에 존재하는 상황이다.
# myapp/views.py
def post(self, request):
data = request.data
r : Review = Review (
userId = User.objects.get(id=uid),
...
)
r.save()
이 경우는 받은 데이터를 이용해서 내 모델에 넣으려고 하는데 외래키로 연결되어 있어서
User 모델을 사용해야 하는 경우이다.
앱 별로 기능을 관리하는 것이 장고의 장점이지만 각 앱에 모델이 작성되면 모델 또한 앱 별로 나눠진다.
따라서 다른 앱의 모델을 사용하기 위해서는 다음의 방법을 사용하면 된다.
# myapp/models.py
from django.db import models
from user.models import User ### 이 부분 추가 ###
class Review(models.Model):
...
# myapp/views.py
from user.models import User ### 이 부분 추가 ###
class ReviewView(APIView):
...
def post(self, request):
data = request.data
r : Review = Review (
userId = User.objects.get(id=1),
...
)
r.save()
장고가 파이썬 언어를 기반으로 하기 때문에
위 방법처럼 다른 앱에 작성된 모델을 import 해서 라이브러리처럼 사용하면 간단하게 해결할 수 있다.
'스터디 > Web' 카테고리의 다른 글
[GCP] 구글 클라우드 플랫폼으로 서버 구축하기 (1) - 인스턴스 생성 (0) | 2022.03.02 |
---|---|
[Django] 모델 수정하고 삭제하기 (0) | 2022.02.08 |
[Django] DRF : Serializer 기본 사용법, 유효성 검증 (0) | 2022.01.30 |
[Django] DRF : REST API를 통해 장고와 리액트 연결하기 (0) | 2022.01.29 |
[Django] DRF : 장고 모델을 json 객체로 추출하기 (0) | 2022.01.19 |