4주차에서 배울 것
- 데이터베이스 간의 관계 파악
- ORM 모델 수정
- Django admin 화면에서 나의 모델 확인
- 팔로잉 / 팔로우 모델 기능 사용
데이터베이스 관계
one-to-many
한 개의 글에는 한 명의 사용자
한 명의 사용자는 여러 개의 글을 가지고 있는 것
one-to-one
OneToOneField
한 명의 사용자는 하나의 프로필 클래스(하나의 정보)만
'데이터 A'와 '데이터 B'가 서로 만나서 중복이 되지 않는 값을 만들어 내는 것
many-to-many
'모델 A'와 '모델 B'가 서로 여러 개의 서로의 모델을 가질 수 있는 것
팔로우-팔로잉 관계
many-to-many 연습하기
django-admin startapp restaurant # 터미널에 입력해 앱 생성
mySpartaSns/settings.py:
INSTALLED_APPS = [
'restaurant', # 앱 연결을 위해 추가
]
restaurant/models.py도 만들었으면,
모델을 데이터베이스에 알려주고 적용시키기
python manage.py makemigrations
python manage.py migrate
오른쪽 Database에서 새로운 테이블 확인 가능 (조금 많이 늦게 뜬다)
admin에 등록하기
restaurant/admin.py:
from django.contrib import admin
from .models import MyPizza, MyTopping # 모델 추가
admin.site.register(MyPizza) # 어드민 페이지에 추가
admin.site.register(MyTopping)
python manage.py createsuperuser # 터미널에서 admin 유저 생성
더보기
- "The password is too similar to the username." : 비밀번호가 사용자 이름과 너무 유사하여 보안성이 낮을 경우 발생하는 메시지.
- "This password is too short. It must contain at least 8 characters." : 비밀번호가 너무 짧아서 보안성이 낮을 경우 발생하는 메시지. 비밀번호는 적어도 8자 이상.
- "This password is too common." : 널리 사용되는 패스워드를 사용하려고 할 때 발생하는 메시지.
- "Bypass password validation and create user anyway? [y/N]:" : 비밀번호 보안 규칙을 위반하지만 강제로 사용자를 생성하고자 할 때, 출력되는 메시지.
SAVE를 눌렀을 때 이런 저장 오류가 난다면
데이터베이스와 관련해서 어드민 계정이 잘못된 경우이다
일단, 왼쪽 탐색기에서 기존에 있던 db.sqlite3를 오른쪽 클릭해서 delete
오른쪽 Database에서 db.sqlite3도 remove
tweet/migrations와 user/migrations의 0001, 0002 파일과 restaurant/migrations의 0001도 지워준다
유저 모델 테이블을 우리가 만든 유저 테이블로 바꾸면서 관리자와 관련된 정보들이 제대로 세팅되어 있지 않은 상태.
전부 삭제 완료했다면 다시 터미널에 아래 입력
python manage.py makemigrations # tweet, user 모델 등 재생성
python manage.py migrate
python manage.py createsuperuser
이제는 피자와 토핑 모두 잘 추가되는 것을 볼 수 있다
'Django' 카테고리의 다른 글
Django 기초 4주차 2_Sparta Coding Club (0) | 2023.04.05 |
---|---|
ERD 설계, 구축_특강 (6) | 2023.04.05 |
Django 기초 3주차_Sparta Coding Club (4) | 2023.04.05 |
Django 기초 2주차_Sparta Coding Club (2) | 2023.04.04 |
Django 기초 1주차_Sparta Coding Club (2) | 2023.04.03 |