1. 유저 프로필 커스텀 ( 프로필 사진, 카카오톡 로그인, 페이스북 로그인, ...)
새로운 프로젝트일 때 하는 것을 추천. 기존에 이미 데이터가 있다면 db 파일을 다 지워야할 수도 있다.
기본 유저 모델로 충분하더라도 커스텀 모델을 만들어 사용하는 것을 추천한다.
User 모델을 우리만의 커스텀 User 모델로 교체
User App 만들기 ('python manage.py startapp users')
> User Model 만들기
from django.contrib.auth.models. import AbstractUser #django가 사용하는 User를 가져와서 재사용
class User(AbstractUser):
...
AbstractUser에 더 많은 기능이 있다.
> Django에게 기본 User가 아니라 우리의 User Model을 사용하고 싶다고 말해야 한다.
#Auth
AUTH_USER_MODEL = 'App이름.Model이름'
config 폴더에 setting.py에 이것을 적어준다. 이것은 django 공식 문서에서 알 수 있다.
그리고 house App을 만들 때 처럼 INSTALLED_APPS에 적어준다.
>
from django.contrib.auth.admin. import Useradmin
from .model import User #우리가 작성한 Model
admin.register(User)
class CustomUserAdmin(UserAdmin):
pass
이것을 admin.py에 적어준다.
2. default: 우리가 데이터를 업데이트할 때, 기존에 있던 데이터는 어떻게 할지 명시할 수 있게 해준다.
non_nullable 필드를 추가하려면 default를 적어주어야한다.
first_name = models.CharField(max_length=150,editable=False) #editable=False는 관리자 패널에서 안보이게 해주는 속성이다.
name = models.CharField(max_length=150, default="") #default를 공백처리
is_host = models.BooleanFiedl(default=False) #default를 False로
또는 경우에 따라 ' default = "" '나 ' default = False ' 대신 ' NULL=TRUE ' 를 사용하여 NULL 값을 둘 수 있다.
3. Fieldsets: admin페이지의 구성을 도와준다.
링크를 참고하여 할 수있다.
4. Relationship: house App과 user App을 연결시킬 수 있다.
django는 unique한 ID(PK:Primary Key)를 모든 object에 만든다. 만약 원래 있던 object가 삭제되더라도 재사용되지 않는다.
owner = ForeignKey("users.User", on_delete=models.CASCADE)
ForeignKey로 가져오는 숫자는 단순한 숫자가 아니라 ID다.
ForeignKey 필드에는 두 가지가 필요하다. : App이름과 model이름, house의 주인 user가 계정을 지우면 house를 어떻게 할지 알려주는 on_delete가 필요하다. CASCADE는 user계정을 삭제하면 house도 삭제한다는 것이다.
'노마드 코더 Airbnb 클론 코딩' 카테고리의 다른 글
노마드 코더 에어비앤비 클론 코딩 #7 ORM (0) | 2022.10.19 |
---|---|
노마드 코더 에어비앤비 클론코딩 #6 Models and Admin (0) | 2022.10.17 |
노마드 코더 에어비앤비 클론코딩 #4 App 만들기 (0) | 2022.10.09 |
노마드 코더 에어비앤비 클론코딩 #3 (0) | 2022.10.09 |
객체 지향 프로그래밍 (1) | 2022.10.04 |