본문 바로가기
Python/Django Ⅲ

(Review) Model 생성 및 Create, Read

by Mr.DonyStark 2024. 5. 27.

□ Office 라는 app 생성후 Patient class로 model을 생성하였음

  ● model

from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator #유효성 검사를 위해 호출

class Patient(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    age = models.IntegerField(validators=[MinValueValidator(0),MaxValueValidator(120)]) #유효성검사 제약조건범위 지정
    heartrate = models.IntegerField(default=60, validators=[MinValueValidator(0),MaxValueValidator(300)]) #유효성검사 제약조건범위 지정

    def __str__(self):
        return f"{self.last_name}, {self.first_name} is {self.age} years old."

 

manage.py를 활용해 shell 을 실행시켜 Create을 해보자

 ● 시작 명령어

py manage.py shell

 

 ● model 임포트 및 조회

  ○ all() : 모두 가져옴

  ○ get() : 단일만 가져옴

#모델임포트
from office.models import Patient

#모든정보 가져오기
Patient.objects.all()

 

 ● 데이터 Create

#단일 Create
Patient.objects.create(first_name="Sanches", last_name="Alex", age=30)

#벌크 Create
add_list=[Patient(first_name="Sancho", last_name="Steve", age=20), Patient(first_name="Neo", last_name="james", age=27), Patient(first_name="mophios", last_name="Jose", age=29)]
Patient.objects.bulk_create(add_list)

 

 ● 데이터 Read

   ○ filter 사용

   ○ filter look up

     - gte : 이상

     - lte : 이하

#pk로 데이터 조회
Patient.objects.get(pk=2)
#조건 조회
Patient.objects.filter(last_name="smith").all()
#복수조건 조회
Patient.objects.filter(last_name="smith").filter(age=40).all()
Patient.objects.filter(age__in=[20,30,40,50]).all()
#gte 조회
Patient.objects.filter(age__gte=39).all()
#lte 조회
Patient.objects.filter(age__lte=20).all()