
models.pyviews.pytests.pyapps.pyadmin.py__init__.pymigrations
INSTALLED_APPS 를 DJANGO_APP 과 OWN_APPS 로 분리



makemigrations
python manage.py makemigrationsmigrations.py 파일을 만듬migrate
python manage.py migrate

Django는 강력한 관리자(어드민) 페이지를 가진 프레임워크

python manage.py createsuperuser

북마크 테이블을 어드민 페이지에서 관리해보기

한국어 변경







Table.objects.all() Table.objects.get(pk=pk) Table.objects.filter(pk=pk) Bookmark = Bookmark.objects.all()
SELECT * FROM bookmark
# get
Bookmark: Bookmark = Bookmark.objects.get(pk=pk)
SELECT * FROM bookmark WHERE id=id LIMIT 1
# filter
Bookmark: [Bookmark] = Bookmark.objects.filter(pk=pk)
SELECT * FROM bookmark WHERE id=id
Bookmark: [Bookmark] = Bookmark.objects.filter(name='네이버')
SELECT * FROM bookmark WHERE naem='네이버'
Bookmark: [Bookmark] = Bookmark.objects.filter(name__icontains='네이')
SELECT * FROM bookmark WHERE naem LIKE '%네이버%'
# gte = greater then equal == '>='
now = datetime.now()
Bookmark: [Bookmark] = Bookmark.objects.filter(created_at__gte=now)
SELECT * FROM bookmrak WHERE created_at >= now
# gt = greater == '>'
now = datetime.now()
Bookmark: [Bookmark] = Bookmark.objects.filter(created_at__gt=now)
SELECT * FROM bookmrak WHERE created_at > now
# lte = low then equal == '<='
now = datetime.now()
Bookmark: [Bookmark] = Bookmark.objects.filter(created_at__lte=now)
SELECT * FROM bookmrak WHERE created_at <= now
# lt = low == '<'
now = datetime.now()
Bookmark: [Bookmark] = Bookmark.objects.filter(created_at__lt=now)
SELECT * FROM bookmrak WHERE created_at < now
장고 쉘 들어가기 : python manage.py shell
ipython 패키지 설치 : poetry add ipython

poetry add django-extensions : 여러가지가 한번에 임포트 됨

# bookmark App의 모델인 Boormark를 import
from bookmark.models import Bookmark
# Bookmark 테이블의 모든 객체를 가져오기
Bookmark.objects.all()
# Bookmark 테이블에서 id가 2인 객체만 가져오기
# 조회된 객체가 2개 이상일 경우 오류 발생
Bookmark.objects.get(id=2)
# 모든 객체를 bookmark_list 변수에 할당
bookmark_list = Bookmark.objects.all()
# 첫번째 객체 가져오기
bookmark_list[0]
Bookmark.objects.first()
# 마지막 객체 가져오기
Bookmark.objects.last()
# 객체의 아이디
bookmark_list[0].id
# id가 2이상인 객체 불러오기
# gte: greater than or equal (이상)
# gt: greater than (초과)
# lt: less than (미만)
# lte: less than or equal to (이하)
Bookmark.objects.filter(id__gte=2)
# name이 네이버인 객체 가져오기
Bookmark.objects.filter(name='네이버')
## like 검색
# DB에 부담을 많이 주기 때문에 너무 짧은 검색어 사용은 지양
# 검색어가 포함된 객체 찾기
Bookmark.objects.filter(name__icontains='네')
# 검색어로 시작하는 객체 찾기
Bookmark.objects.filter(name__startswith='다')
# 검색어로 끝나는 객체 찾기
Bookmark.objects.filter(name__endswith='글')
# 지정된 리스트 내의 값들 중 하나와 일치하는 객체 찾기
Bookmark.objects.filter(name__in=['구글','네이버'])
# , 로 and 조건 검색 가능
Bookmark.objects.filter(name='네이버', url__startswith="https://naver")
# 기본
Bookmark.objects.create(name='야후', url='https://yahoo.com')
# 새로운 Bookmark 객체를 생성하고 데이터베이스에 저장
bookmark = Bookmark(name='야후2', url='https://yahoo.com')
bookmark.save()
## id값을 변경하여 새로운 데이터 만들기
# _를 쓰기 위해 모든 객체를 조회합니다.
# _는 마지막 Output값을 가져옵니다.
Bookmark.objects.all()
# b에 첫번째 데이터를 할당합니다.
b = _.first()
# b의 id를 None으로 변경합니다.
# 첫번째 데이터에는 영향이 없습니다.
b.id = None
# id값이 없는 b 객체를 저장합니다.
# DB에서는 b를 새로운 데이터로 인식합니다.
b.save()
# b의 id가 새롭게 생겼습니다.
b.id
# b 객체의 name을 변경하면 차이를 알기 쉽습니다.
b.name = '네이버2'
# 다시 모든 객체를 불러옵니다
# b가 Bookmark에 추가되었습니다.
Bookmark.objects.all()
## 객체 업데이트
# url에 'naver.com'이 포함된 객체들의 name을 '네이버'로 업데이트합니다.
# Output에는 변경된 객체의 수가 출력됩니다.
Bookmark.objects.filter(url__icontains='naver.com').update(name='네이버')
## 객체 삭제
# b 객체를 삭제합니다.
# 메모리에서는 사라지지 않지만, b.id 값은 존재하지 않습니다.
# Django는 id값 유무에 따라 DB 저장 유무를 판단합니다.
b.delete()
# 여러개를 한 번에 삭제
Bookmark.objects.filter(name__icontains='야후').delete()
Bookmark.objects.count() # 몇개 존재하는가
python manage.py shell_plusls 했을때 manage.py가 나오는가 Bookmark.objects.create(name='이름',url='https://~~.com')# Shell에서
for i in range(100)
Bookmark.objects.creates(name=f'테스트 네이버 {i}',url=f'https://naver.com')
## 테스트 네이버 1~100으로 같은 url을 가진 북마크 100개 생성
Bookmark.objects.filter(id__gte=50)

