카테고리 없음

DRF models.py 만들기[2]

abccoco 2022. 6. 20. 20:59

전에 drf에서 models.py 만드는 방법을 정리 했었지만

추가로 설명이 필요한 부분들이 있다고 느껴서 다시 models.py를 만드는 법을 정리해 보았다.

 

 

user.models

# 임포트
import BaseUserManager, AbstractBaseUser



custom user model 을 사용하기 위한 필수 코드 작성하기

이 부분은 전에 정리한 곳에서도 올렸었고, 이전 코드를 가져와 사용할 수 있기 때문에 자세히 다루지 않겠다.

class UserManager(BaseUserManager):
	# def create_user, def create_user 생성을 해준다.
class User(AbstractBaseUser):

 

다른 app에서 models.py 만들기

보통 user 필드는 ForeignKey를 사용하고 user 앱의 User 클래스와 연결하는것 같다.

# user models 이외의 models 설정 방법
# 보통 article 이나 product 이나 app 이름을 첫 클래스로 만드는 것 같다.
class Article(models.Model), class Product(models.Model)
# user 모델의 class User 과 연결한다.
user = models.ForeignKey(“user.User”, verbose_name, CASCADE)



* tip
필드에서도 여러 선택지를 만들 수 있다.
예를들어 “배송 상태” 필드가 있다면, 배송 준비, 배송 중, 배송 완료가 있을 것이다.
그런 경우 STATUS = (“redy”, “배송 준비”), 를 만들어 주고 필드에
choices = STATUS 를 넣어주면 된다.

모델에서는 class 를 만들어 각각의 데이터 필드와 필드간의 관계를 설정해 준다.
예를들어 장바구니,  결제목록 등등
AUTH_USER_MODEL = “user.User” 지정을 해 주어야 한다.

 

filed 속성

  • on_delete

CASCADE : FK로 참조하는 레코드가 삭제 될 경우 해당 레코드를 삭제한다.

SET_NULL : FK 필드의 값을 Null로 변경해준다. null=True가 정의되어 있어야 사용 가능하다.

SET_DEFAULT :  FK 필드의 값을 default로 변경해준다. default=””가 정의되어 있어야 사용 가능하다.

 

  • DateField와 DateTimeField

auto_now_add = True : 레코드가 생성될 때의 date를 기준으로 값을 지정한다.

auto_now = True : 레코드가 save()될 때마다 갱신된다.