User Model 커스텀하기
덮어 쓰거나 속성을 몇개 없애거나 로직을 추가하는것
Models를 수정할때마다 migration을 해야하는 이유
Python 코드에 있는 모델 구조와 데이터베이스의 구조를 서로 동기화 하기 위해서임
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
first_name = models.CharField(max_length=150, editable=False)
last_name = models.CharField(max_length=150, editable=False)
name = models.CharField(max_length=150)
is_host = models.BooleanField()
이 상태에서 python manage.py makemigrations를 하면 에러가 발생함 왜냐하면 기본 값이 없기때문임
Null이 될 수 없는 is_host이기 때문에
It is impossible to add a non-nullable field 'is_host' to user without specifying a default. This is because the database needs something to populate existing rows.
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit and manually define a default value in models.py.
Select an option:
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
first_name = models.CharField(max_length=150, editable=False)
last_name = models.CharField(max_length=150, editable=False)
name = models.CharField(max_length=150, default="")
is_host = models.BooleanField(default=False)
model를 수정 후 default를 주면 이전에 입력한 값들은 default 기준으로 들어감
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
first_name = models.CharField(max_length=150, editable=False)
last_name = models.CharField(max_length=150, editable=False)
name = models.CharField(max_length=150, default="")
is_host = models.BooleanField(null=True)
null를 True로 줄시에 기본 값이 null로 들어감
'2024 > python 개발자 되기' 카테고리의 다른 글
[Day-5][Django] 외래키 (1) | 2024.05.21 |
---|---|
[Day-5][Django] Custom Admin, admin 속성 값 수정 (0) | 2024.05.20 |
[Day-3][Django] Custom User (0) | 2024.05.19 |
[Day-2][Django] User 패널 수정 (0) | 2024.05.18 |
[Day-1][Django] app이란?, 어플리케이션 만들기 (0) | 2024.05.17 |