본문으로 바로가기
728x90
반응형
 

개요

 

django의 model을 사용하다 약간의 불편함이 생겼습니다. 생성한 app의 models.py에서 model을 선언해서 사용하다 보니 app이 많아 질수록 여기저기 오가면서 테이블을 뒤져봐야 한다는 점이었습니다.

 

Two Scoops of Django라는 책에서는 작은 단위의 app으로 관리하는 방법을 적용하라고 하던데 이에 반대하는 호기심으로 테이블을 한 곳으로 몰아넣고 그곳에서만 관리를 해보면 어떨까 하는 생각을 해봤습니다.

 

 

목적

앞서 언급했듯 목적은 한 폴더에서 models를 관리할 수 있는 것입니다. 잠시 고민한 뒤 다음과 같은 방법을 사용해보기로 했습니다.

 core/models/__init__. py 만들고 테이블마다 파일을 생성한 뒤 라이브러리화 시켜보자
 
 

Setting 하기

sqlite sampledb(https://www.sqlitetutorial.net/sqlite-sample-database/)를 사용하기로 했습니다. 이제 inspectdb 명령어를 이용해 table을 정보를 불러오면 됩니다.

$ python manager.py inspectdb

위 명령을 통해 불러온 테이블 정보는 console에서만 출력되니 리다이렉션을 이용해 따로 파일로 저장하고 django project에서 다음과 같이 'core/models/__init__.py'를 생성한 뒤 아래와 같이 테이블마다 파일을 생성했습니다.

 

 

Model에 접근하려면?

여기까지 하면 db table을 한 포인트에서 몰아넣겠다는 목적은 잘 완료한것 같습니다. 아래는 django source에서 이 model을 사용하기 위한 코드입니다.

# app/view.py

from core.models import Albums, Artists
from django.http import HttpResponse

def hello(request):
    obj = Albums.objects.all()
    print(obj)

    return HttpResponse()

from core.models import Albums와 같이 import 된 부분이 마음에 드네요. 크게 어려운 부분은 없었지만 위와 같이 쓰면 어떤 문제점이 있을까에 대한 고민은 다음으로 미뤄야겠습니다.

 

 

3줄 요약

  1. 이 app 폴더 저 app 폴더 오가면서 model을 보기가 불편함
  2. model만 관리하는 app을 만들어서 사용하면 어떨까 생각하게 됨
  3. 해놓고 보니 한눈에 파악할 수는 있는데 이렇게 쓰는 게 맞는 걸까라는 의문이 듦
 

 

 

728x90
반응형