inspectdb
명령어 존재$ python manage.py inspectdb
settings.py
파일에 분석하려는 데이터베이스의 접속 정보를 설정해 두어야 함$ python manage.py inspectdb > models.py
또는
$ python manage.py inspectdb --database=DB명 > APP명/models.py
$ python manage.py inspectdb --database=hwaya > projects/models.py
Tip! 추가 내용
- 특정 테이블만 가져오고 싶을 때
$ python manage.py inspectdb --database=DB명 TABLE명1 TABLE명2 > APP명/models.py $ python manage.py inspectdb --database=hwaya users products > projects/models.py
Tip! 주의 사항
- Django로 가져온 테이블의 컬럼 필드와 PostgreSQL 내 테이블의 컬럼 필드가 다를 경우가 존재
- 생성한 후 확인 하는 것을 권장
- 만일 모델에
FK
/ManyToMany
/OneToMany
등의 연관 관계가 있는 필드는 오류가 나게 됨
- 가져온 스키마의 정보는 기존 ORM을 그대로 가져 오는것이 아닌
APP명 + TABLE명
으로 바뀌게 되기 때문- 그래서 해당 연관 관계의 모든 필드에
related_name
이 없다면 정의해야 함- 테이블 명이 바뀜으로써 연관 관계가 틀어지는데 이 결과 쿼리상의
__set
으로 선언했던inner join
의 형식을 모두 바꿔줘야 함
Parents
←Childern
의 모델이Family
라는 APP에 등록 되어 있었을 경우
- 기존
Parent.objects.childern__set.all()
으로 참조 가능했던 쿼리는FamilyParent.objects.FamilyChildern__set.all()
으로 이름이 바뀐 것