MVC 패턴에서 Model 영역을 의미하며, 장고 모델은 DB 데이터를 정의하는 작업이다. ORM(Object-relational mapping) 지원으로 선언하는 클래스가 DB의 테이블과 완벽히 매칭된다.
- 장고의 Model = Model
- 장고의 View = Controller
- 장고의 Template = View
장고(Django) 개발: 프로젝트 시작과 구성 포스팅에서 모델 영역만을 자세히 정리한 것이다.
작년에 장고(Django) 프레임워크로 프로젝트를 진행하면서 공부했던 개발 지식을 블로그에 다시 정리하려고 합니다. 개인 위키에 정리했던 것을 옮기는 수준이라, 친절한 설명은 기대하기 어렵고, 프로그래밍 언어와 파이썬 지식이 어느정도 있어야 이해할 수 있을 것입니다.
아래 내용들은 Django 1.6~1.7 버전을 기준으로하고, "쉽고 빠른 웹개발 Django"란 책에서 1/3, 공식 위키에서 1/3, 그리고 나머지는 구글링을 바탕으로 정리한 지식입니다. 말투가 존대와 반말이 섞여있어도 이해바랍니다 :)
1 모델 만들기
2 모델의 필드 타입과 필드 옵션
3 모델의 메타 옵션
4 모델 관련 주요 함수
5 모델 관련 주요 콘솔 명령
1 모델 만들기
models 패키지의 Model 객체를 상속받는 클래스가 하나의 DB 테이블을 의미하며, 특정 Field 클래스의 인스턴트로 생성되는 변수들이 해당 테이블의 한 필드가 된다.
필드 설정시, 필드 타입과 필드 옵션, 그리고 메타 옵션 등을 지정할 수 있다.
참고 : https://docs.djangoproject.com/en/1.6/topics/db/models/
2 모델의 필드 타입과 필드 옵션
필드 타입은 크게 일반 필드 타입과 관계 필드 타입으로 나뉘고, 각 필드 클래스들이 DB 필드의 성격을 나타낸다
일반 필드 타입과 옵션
일반 필드 타입 | 설명 |
---|---|
class AutoField(**options) | 아래 링크 참고 |
class BigIntegerField([**options]) | |
class BinaryField([**options]) | |
class BooleanField(**options) | |
class CharField(max_length=None[, **options]) | |
class CommaSeparatedIntegerField(max_length=None[, **options]) | |
class DateField([auto_now=False, auto_now_add=False, **options]) | |
class DateTimeField([auto_now=False, auto_now_add=False, **options]) | |
class DecimalField(max_digits=None, decimal_places=None[, **options]) | |
class EmailField([max_length=75, **options]) | |
class FileField(upload_to=None[, max_length=100, **options]) | |
class FloatField([**options]) | |
class ImageField(upload_to=None[, height_field=None, width_field=None, max_length=100, **options]) | |
class IntegerField([**options]) | |
class IPAddressField([**options]) | |
class GenericIPAddressField([protocol=both, unpack_ipv4=False, **options]) | |
class NullBooleanField([**options]) | |
class PositiveIntegerField([**options]) | |
class PositiveSmallIntegerField([**options]) | |
class SlugField([max_length=50, **options]) | |
class SmallIntegerField([**options]) | |
class TextField([**options]) | |
class TimeField([auto_now=False, auto_now_add=False, **options]) | |
class URLField([max_length=200, **options]) |
참고 : https://docs.djangoproject.com/en/1.6/ref/models/fields/#field-types
관계 필드 타입과 옵션
관계 필드 타입 | 설명 |
---|---|
class ForeignKey(othermodel[, **options]) | 아래 링크 참고 |
class ManyToManyField(othermodel[, **options]) | |
class OneToOneField(othermodel[, parent_link=False, **options]) |
참고 : https://docs.djangoproject.com/en/1.6/ref/models/fields/#module-django.db.models.fields.related
공통 필드 옵션
모든 필드에서 공통으로 사용할 수 있는 필드 옵션임.
필드 옵션 | 설명 |
---|---|
null | 아래 링크 참고 |
blank | |
choices | |
db_column | |
db_index | |
db_tablespace | |
default | |
editable | |
error_messages | |
help_text | |
primary_key | |
unique | |
unique_for_date | |
unique_for_month | |
unique_for_year | |
verbose_name | |
validators |
참고 : https://docs.djangoproject.com/en/1.6/ref/models/fields/#field-options
3 모델의 메타 옵션
모델에 추가적인 정보 제공이나 기능을 수행할 수 있도록 하는 것이 메타 옵션이다.
메타 옵션 | 설명 |
---|---|
abstract | 아래 링크 참고 |
app_label | |
db_table | |
db_tablespace | |
get_latest_by | |
managed | |
order_with_respect_to | |
ordering | |
permissions | |
proxy | |
select_on_save | |
unique_together | |
index_together | |
verbose_name | |
verbose_name_plural |
참고 : https://docs.djangoproject.com/en/1.6/ref/models/options/#available-meta-options
4 모델 관련 주요 함수
하나의 모델인스턴스 = 하나의 DB레코드와 같음
5 모델 관련 주요 콘솔 명령
'IT > └ 장고(Django) 개발' 카테고리의 다른 글
장고(Django) 개발: 관리자(Admin) 화면 관리 (0) | 2015.01.11 |
---|---|
장고(Django) 개발: 사용자 관리 (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 템플릿(Template) (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 뷰(View) (0) | 2015.01.10 |
장고(Django) 개발: 프로젝트 시작과 구성 (0) | 2015.01.09 |
장고(Django) 개발 환경: 이클립스 설치 및 설정하기 (0) | 2015.01.06 |
장고(Django) 개발 환경: 윈도우 개발PC에 설치하기 (0) | 2015.01.06 |
장고(Django) 개발 환경: 리눅스에서 아파치 웹서버로 돌리기 (0) | 2015.01.06 |