일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 장고란
- 구조체와 클래스의 공통점 및 차이점
- 엑셀
- k-eta
- double ended queue
- string 함수
- vscode
- 입출력 패턴
- 자료구조
- 연결요소
- 알고리즘 공부방법
- Django란
- UI한글변경
- 백준
- 표준 입출력
- string 메소드
- correlation coefficient
- 입/출력
- 2557
- scanf
- 매크로
- 시간복잡도
- Django의 편의성
- 프레임워크와 라이브러리의 차이
- c++
- EOF
- Django Nodejs 차이점
- 이분그래프
- getline
- iOS14
- Today
- Total
Storage Gonie
23. (app2) Django Shell로 Model 조작하기1 본문
1. Shell 실행
- "python manage.py shell"
2. 두 모델 import
- "from polls.models import Question, Choice"
3. 잠시 후 사용할 메소드 import
- "from django.utils import timezone"
4. 모델의 오브젝트 생성
- "q = Question(question_text = "최고의 고기는?", pub_date = timezone.now())"
5. 생성한 오브젝트를 데이터베이스에 저장
- "q.save()"
6. 생성한 오브젝트의 속성 접근
- "q.id" -> 1
- "q.pub_date" -> 최고의 고기는?
- "q.question_text" -> datetime.datetime(2019, 2, 17, 8, 48, 11, 723161, tzinfo=<UTC>)
7. 특정 모델의 모든 오브젝트 가져오기
- "Question.objects.all()" -> <QuerySet [<Question: Question object>]>
7-1. 특정 모델의 모든 오브젝트 가져오기, 객체의 내용 으로 출력되게 하기
- 각 모델의 메소드에 __str__() 메소드 추가
from django.db import models
# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published') # ( ) 에 들어간 텍스트는 그냥 주석이다.
# 객체를 그대로 출력할 때 객체의 내용을 보여주도록 오버라이딩
def __str__(self):
return self.question_text
class Choice(models.Model):
# Foeign Key 설정, on_delete 설정 : 참조한 키가 삭제되면 그 키와 관련된 데이터를 같이 삭제해주세요
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default = 0)
# 객체를 그대로 출력할 때 객체의 내용을 보여주도록 오버라이딩
def __str__(self):
return self.choice_text
7-2. 메소드 추가 후 특정 모델의 모든 오브젝트 가져오기의 바뀐 결과
- "Question.objects.all()" -> <QuerySet [<Question: 최고의 고기는?>]>
8. 객체 복수검색
- "Question.objects.filter(id=1)" -> <QuerySet [<Question: 최고의 고기는?>]>
- filter를 이용한 결과는 여러개가 나올 수 있으며, 리스트의 형태로 감싸진 결과가 나온다. 따라서 아래와 같이 인덱스로 접근할 수 있다.
- "Question.objects.filter(id=1)[0]" -> <Question: 최고의 고기는?>
- "Question.objects.filter(pk=1)[0]" -> <Question: 최고의 고기는?>
- id는 pk와 같다.
8-1. filter와 startswith를 아용한 객체 복수검색
- Question.objects.filter(question_text__startswith = '최') -> <QuerySet [<Question: 최고의 고기는?>]>
- 위의 입력에 대한 결과는 question_text이 '최'로 시작하는 객체들을 반환해준다.
9. 모델의 메소드 호출해보기
- Question모델에 다음의 모듈 및 메소드를 추가해준다.
- 다음의 메소드는 객체가 최근에 갱신되었는지 아닌지를 알 수 있다.
from django.utils import timezone
import datetime
# 객체가 가지고 있는 날짜 >= 하루전의 시간(어제)라면 True
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1) # 어제 = (현재시간 - 하루)
9-1. 모델의 메소드 호출해보기
- "q.was_published_recently()" -> True
'웹개발 > Django 웹서비스 개발(인프런)' 카테고리의 다른 글
25. (app2) Django admin 페이지 사용하기(모델이 admin 페이지에서 어떻게 보여지는지) (0) | 2019.02.17 |
---|---|
24. (app2) Django Shell로 Model 조작하기2 (0) | 2019.02.17 |
22. (app2) Django Model 생성(foreign key로 연결된 2개의 모델 만들기) (0) | 2019.02.17 |
21. (app2) 셋업 및 urls.py와 views.py 수정( app2, polls 프로젝트 생성 및 Including another URLconf) (0) | 2019.02.17 |
20. python anywhere를 이용한 Django 프로젝트 배포 (0) | 2019.02.12 |