# 데이터 구축
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db import models | |
# 장고에 내장된 데이터베이스 구축 모듈 models | |
# 장고HTML에서 option 선택지로 활용가능 튜플, | |
CITY_CHOICES=( | |
('부산', '부산'), | |
('제주도', '제주도'), | |
) | |
# 활용은 이런 식으로 | |
# <select name="city" id="city"> | |
# <!-- select 태그는 선택요소를 만듦 --> | |
# <!-- name='필드' 폼으로 전송 --> | |
# <option value="부산">부산</option> | |
# <!-- value="값" 을 전송 --> | |
# <option value="제주도">제주도</option> | |
# </select> | |
# 예시 데이터 구축 | |
# 데이터 테이블을 클래스로 구현 | |
class x_data(models.Model): | |
# models.Model을 상속받아 사용 | |
name = models.TextField(null=True, blank=True) | |
# TextField()는 텍스트 저장 | |
# blank=True 는 빈칸이어도 저장(디폴트 False) | |
# null=True 은 null 값으로 저장(디폴트 False) | |
image = models.ImageField(upload_to='images/', blank=True, null=True) | |
# ImageField. 이미지 파일 저장 | |
# upload_to='images/' 은 업로드 경로 폴더 | |
city = models.CharField(max_length=20, choices=CITY_CHOICES, blank=True, null=True) | |
# CharField. 제한된 글자. 선택 요소 저장. | |
heart = models.IntegerField(blank=True, null=True) | |
wish = models.BooleanField(blank=True, null=True) | |
def __str__(self): | |
# 내장 함수로, 객체를 str값으로 반환. 데이터에 str값으로 들어가는 정보 | |
# 이렇게 반환하지 않으면, 데이터 문자열이 아닌 주소값이 데이터베이스에 저장됨. | |
return f'{self.name},{self.image}, {self.city},\ | |
{self.heart}, {self.wish}' | |
# 예시 참조 데이터 구축 | |
class Rel_data(models.Model): | |
# 관계형 데이터 테이블 사용 위해 | |
rel_data = models.ForeignKey(x_data, on_delete=models.CASCADE, related_name='rel_data') | |
# ForeignKey. 외래키 참조 필트. 이 필드는 테이터 참조 로직만 구현. | |
# 키를 가진 객체가 자식 데이터. 참조 데이터가 부모데이터(x_data) | |
# on_delete=models.CASCADE 은 부모 데이터 삭제시 참조 자식 모두 삭제 | |
# related_name='rel_data' 은 부모 데이터에서 역참조 할 때 사용 | |
# 결론은 이 필드가 부모데이터와 관계 형성. 속성 마지막에 부모데이터 참조 속성값이 자동 생성됨. | |
# 관련 알고리즘은 views 함수에서 정의 | |
name = models.TextField(null=True, blank=True, default='') | |
# default | |
image = models.ImageField(upload_to='images/', blank=True, null=True) | |
time = models.DateTimeField(auto_now_add=True) | |
# DateTimeField(auto_now_add=True) 를 사용하여 현재 시간 저장 | |
# 저장 할 때, 중복 객체를 방지하기 위함 |
# 데이터 베이스 모델 생성 및 변경 시 -> 실행해줘야 하는 명령문
python manage.py makemigrations
: 스키마 작성(데이터 베이스 작성), 아직 데이터베이스로 구현하지 않음. 마이그레이션파일로 만듦.
(마이스레이션 만들때 에러가 나거나 안만들어지는 경우가 있다. 파일 삭제나 설정 꼬였을 시,)
python manage.py makemigrations 앱1 앱2 ...
: 강제로 마이그레이션파일 만듦
python manage.py migrate
: 스키마 데이터 베이스에 적용 업데이트. 마이그레이션 파일을 데이터에 적용. 실제 데이터베이스로 구현
반응형
'Programming > 장고(django) - API' 카테고리의 다른 글
장고(django)/ 뷰(V, views) (0) | 2023.06.02 |
---|---|
장고(django)/ 시리얼라이저(Serializers, api통신 관련) (0) | 2023.06.02 |
장고(django)/ 템플릿(T) (0) | 2023.06.02 |
장고(django)/ 앱 생성 (0) | 2023.06.02 |
장고(django)/ 기본설정 (0) | 2023.06.02 |