티스토리 뷰

반응형

Django - model 사용하기 

 

장고의 웹 어플리케이션에서는 모델을 통해서 데이터에 접속하고 관리하게 됩니다. 모델은 저장된 데이터의 구조를 정의하고 데이터에 대한 필드타입, 사이즈 등등을 설정한다. 이번 포스팅에서는 모델을 정의 하는 방법, 또한 각각 필드데이터에 대한 속성에 대해서 알아본다. 

 

1. 모델의 정의 

 

모델의 django.db.models.Model 을 상속받아서 정의한다. 기본적은 모델은 다음과 같이 정의 할수 있다. 

 

출처 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Models

- 필드(fields) 

모델은 여러가지 타입의 데이터를 저정할수 있다. 여기서 데이터 타입은 데이터를 저장하는 데이터베이스의 필드속성에 매칭하는데 이용된다. 다음 예를 보자. 

my_field_name 은 데이터 필드의 이름이며, 문자열을 저장하기 위한 charField 타입을 가진다. 

 

  - max_length : 문자열의 최대 길이 - 20 

  - help_text : 데이터를 입력할때 사용자들에게 해당 필드에 대한 설명을 제공

  - verbose_name : 필드에 대한 라벨을 지정

 

이 외에도 다른 많이 옵션들이 존재하는데, 필요에 따라 장고 공식문서 ( Field options ) 를 참조하면된다. 

 

 

모델의 다른 데이터 필드형태가  존재한다. 

필드 타입 설명 
CharField 짧은 문자열을 정의할때 사용, max_length 를 지정해 주어야 한다. 
TextField 긴 문자을 정의할때 사용. 
IntegrateField 정수값을 정의할때 사용. 
DateField/DateTimeField

날짜/ 날짜,시간 정보를 정의할때 사용.

EmailFiedl 이메일 주소를 정의 할때 사용
FileField / ImageField 파일 및 이미지 업로드를 위해서 사용
AutoField 자동으로 증가하는 IntegerField 이며, primary key 가 정의되지 않으면 자동으로 테이블에 추가되서 primary key 로 사용된다. 
ForeignKey 다른테이블과의 관계에서 일-대-다 관계를 정의한다. 
ManyToManyField 다른데이블 과의 관계에서 다-대-다 관계를 정의한다. 

이외에 다른 데이터필드 타입은 장고 공식 문서( field type ) 를 참고 하면된다.  

 

- 메타데이터 ( Meta ) 

 

아래와 같이 class Meta 를 통해서 선언할수 있고, 이는 해당 모델 전체에 적용된다. 

기본적으로 쿼리를 통해서 반환되는 레코드의 순서를 제어 할수 있다. 그리고 반대로 정렬하고 싶다면  "-" 마이너스 기호를 필드이름 앞에 붙여주면된다. 

 

모델 필드데이터와 같이 모델에 대해서도 라벨을 붙여줄수 있다. 

메타데이터에 대한 다른 옵션들도 장고 문서 ( Model metadata options ) 를 통해서 확인할수 있다. 

 

 

- 메소드(Methods) 

 

모델은 메소드를 가질수 있으며, 기본적으로 __str__() 을 정의해서 사람이 읽을 수 있는 문자열을 반환하는것이 기본이다. 

그리고 일반적으로 사용하는 메소드중에 하나가 get_absolute_url() 이다. 개별적의 레코드별로 url 을 생성해서 접근할 수 있게 만들어주는 url 이다. 

- 레코드 검색하기 

 

모델의 objects 를 이용해서 원하는 레코드를 검색할 수 있다. 

 

예를 들면 Book 이라는 모델에 있는 모든 레코드를 반환한다. 그리고 특정 레코드를 선택적으로 반환하고 싶다면 filter()를 사용해서 검색하면된다. 

filter() 안에 contains, exact, startswith 등등의 옵션을 사용해서 필요한 레코드만 반환한다. 필터 옵션에 대한 자세한 내용은 장고 공식 문서 (filter lookups) 에서 확인할 수 있다. 

 

 

끝.. 

 

 

< references > 

1. https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Models

 

Django Tutorial Part 3: Using models

이 article에서는 LocalLibrary website의 모델을 어떻게 정의할지 보여줄 것입니다. 모델이라는 것이 무엇인지, 어떻게 선언하는지, 그리고 주된 field type들에 대해서 설명합니다. 그리고 모델의 데이터에 접근할 수 있는 몇몇 방법에 대해서 간단히 보여줄 것입니다.

developer.mozilla.org

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함