djangoshell

djangoshell

장고에는 shell을 이용해서 model의 내용을 읽고 생성하고 수정하고 삭제할수가 있다. 즉 CRUD가 터미널 명령으로 확인이 가능한 것이다. 물론 admin으로도 확인이 가능하지만 가능하면 shell을 통해 명령어를 확인하고 코딩을 하게되면 좀더 효과적으로 학습이 가능하다. shell에 입력이 가능한 명령어들을 정리해 봤습니다.

import


** 필요한 모델과 기능들을 불러오는 부분

from django.contrib.auth.models import User

from django.conf import setting

from chat.models import *
from accounts.models import *

CRUD


** objects 디폴트 메니저를 통해 crud를 구현할수 있다

R

from django.db.models import Q
from post.models import Post # Post 모델 불러오기
from django.contrib.auth.models import User # User 모델 불러오기

user = request.user # 현재 접속한 user 확인 FBV( 함수형 view 일때 )
user = self.request.user # 현재 접속한 user 확인 FBV( 클래스형 view 일때 )

Post.objects.all()
Post.objects.count() # 숫자확인
Post.objects.all().order_by(‘-id’)[:10]
Post.objects.get(pk=1)
Post.objects.values() # 전체 필드 확인
Post.objects.filter(username=’kindfamily’, gender=’남성’)
Post.objects.filter(Q(username=’kindfamily’) | Q(gender=’남성’)) # or
Post.objects.filter(Q(username=’kindfamily’) & Q(gender=’남성’)) # and
Post.objects.filter(username=’kindfamily’, gender=’남성’).exclude(location=’서울’) # 제외할 조건

C

Post.objects.create(name=’kindtiger’)

U

1 - row 하나씩 수정해야해서 느리다

post.Post.objects.get(id=1)
post.title = ‘django shell’
post.save

2 - 일괄 수정해서 조금더 빠르다

post = Post.objects.all()
post.update(title=’python shell’)

D

Post.objects.all().delete()
Post.objects.all().delete(pk=1)

기타


출처: 초보몽키의 개발로그 링크

모델의 첫번째 내용 출력하고 싶을때

YourModel.objects.all().first()

sql 내역 확인

1
2
3
4
5
6

from django.db import connection
from post.models import Post

from query in connection queries:
print(query)

포스팅 1000개 한꺼번에 만들기

1
2
3
4
5

import random
for i in range(1000):
status = random.choice(['d', 'p', 'w'])
Post.objects.create(author="kindfamily", title="제목 #{}".format(i), content="테스트 내용 #{}".format(i), status=status)

filter를 통한 검색 구현

1
2
3
4
5
6
7
8
def post_list(request):
qs = Post.objects.all()
q = request.GET.get('q', '')
if q:
qs = qs.filter(title_icontains=q)
return render(request, 'blog/post_list.html',{
'post_list': qs,
})
1
2
3
4

<form action="" method="get">
<input type='text' name="q"><input type="submit" value="검색">
</form>

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×