무조건 봐야하는 링크
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Models
참고하기 좋은 링크
https://wikidocs.net/6667
from django.db import models
class BoardMember(models.Model):
username = models.CharField(max_length=100, verbose_name='유저ID')
email = models.EmailField(max_length=100, verbose_name='유저메일')
password = models.CharField(max_length=100, verbose_name='유저PW')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='가입날짜')
updated_at = models.DateTimeField(auto_now=True, verbose_name='마지막수정일')
def __str__(self):
return self.username
class Meta:
db_table = 'boardmembers'
verbose_name = '게시판멤버'
verbose_name_plural = '게시판멤버'
class 는 붕어빵 틀이고 여기에서 나오는 객체는 붕어빵 이라고 생각한다. 각각의 객체를 정의하는 사용자이름, 이메일, 비밀번호, 생성날짜, 업데이트 날짜 들은 움직이지 않는 요소이다.
하나의 모델 클래스는 데이터베이스에서 하나의 테이블에 해당된다.
한편 게시판멤버가 뭔가를 한다, 움직이는 것을 정의할 때는 class 내에 함수 def 를 정의해 준다.
사용자가 읽기 쉬운 모델 객체의 이름으로 관리자 화면 등에서 표시된다. 영어를 기준으로 단수형이다.
verbose_name 옵션을 지정하지 않으면 CamelCase 클래스 이름을 기준으로 camel case 이와 같이 모두 소문자로 변경한다.
사용자가 읽기 쉬운 모델 객체의 이름으로 관리자 화면 등에서 표시되는 것은 동일하나 영어를 기준으로 복수형이다.
한국어에서는 굳이 단수와 복수를 구별해 사용하지 않으므로 verbose_name과 동일하게 쓸 수 있다.
verbose_name_plural 옵션을 지정하지 않으면 verbose_name에 s를 붙인다.
블로그를 만든다고 생각해 보자.
Post라는 모델에서 수정일자에 사용되는것은 auto_now 이다.
이는 auto_now가 해당 모델이 save 될 때 마다 현재 날짜로 해당 필드를 갱신시키기 때문이다.
생성일자에 사용되는 것은 auto_now_add이다. auto_now_add는 해당 모델이 처음으로 save(모델 생성 시) 될 때 현재 날짜로 추가한다.
하지만 현재 적용된 것은 멤버의 회원가입에 대한 모델이다.
참고 블로그 : https://tomining.tistory.com/145
생성되는 객체의 타입을 문자열로 변환해서 보여주게 한다.
def __str__(self):
return self.username
생성된 객체가 username 으로 보이게 된다.
설정을 하지 않았을 시 object(1) 이렇게 표시된다.
db_table 은 데이터베이스에 저장되는 테이블명을 의미한다.
보통 클래스명의 복수형으로 표기한다.