#11 Django-2

박종규·2021년 7월 17일
1

TIL

목록 보기
12/22

1. 프로젝트 폴더 내에 Model.py 작성

Database와 연동해주기 위해서 mirgrate 하기 전에,
항목별 이름 및 데이터 타입을 지정해준다.

  • 객체를 정의하는 class 뒤에는 모델의 이름을 작성한다.
  • 모델 이름은 단수로 첫 글자는 대문자로 정의한다.
  • models.Model은 Django의 models 클래스를 가져왔다는 의미이다.
  • Meta : Inner class로 상위 class에게 meta data 제공
  • db_table : DB 내에 해당 class table 이름을 지정
  • 필드 이름은 소문자로 띄어쓰기는 _ 로 표기

필드 유형

.CharField : 길이 제한이 있는 텍스트

  • 최대 255자까지 가능하다. max_length를 지정해주어야 함.

.TextField : 길이 제한이 없는 텍스트

  • 기본적으로 blank = False로 되어 있어서 반드시 적어주어야 하지만,
    blank = True로 둘 경우, pass가 가능하다.

.ForeignKey: 다른 table에서 참조하는 외래키

  • 참조할 class를 적어준다.
  • on_delete=models.CASCADE 옵션은 Primary Key가 삭제될 경우, 계단식으로 따라서 삭제된다. 외에도 default, null 등으로 변경하는 옵션이 있다.
  • db_column은 mysql에서 table명을 지정해준다. 지정하지 않을 경우, app이름_class이름으로 저장된다.

.DecimalField: 실수 데이터

  • max_digits은 최대 자릿수
  • decimal_places는 소수 자릿수

.IntegerField : 정수 데이터

.DateTimeField : 입력될 때의 날짜와 시간 데이터 저장

  • auto_now_add=True 는 create될 때 데이터 값 저장
  • auto_now=True는 create + update될 때 데이터 값 저장

2. Migration

mysql 에서 해당 DB에 접속했을 때의 모습이다.
각 table의 정보가 잘 되어있는지

DESC products;

로 확인해볼 수 있다.

id 값은 자동으로 생성되며, 추가될 때마다 1씩 증가하는 primary key이다.

3. Queryset API를 이용

터미널에 class명.objects.method명(~~)을 입력한다.
그 전에 아래와 같이 class를 import 해주어야 한다.

method마다 queryset을 반환하거나 그렇지 않은 케이스로 나눠진다.
잘 구분해서 사용해야 함.

대표적으로 ForeignKey를 Create할 때, filter를 사용하면 에러가 뜬다.
그래서 아래와 같이 get을 이용해야한다.

이 외에도 많은 API가 있으니, 참고해볼 것.

참고 : https://docs.djangoproject.com/en/3.1/ref/models/querysets/

0개의 댓글