바뀜
→CRUD
|<syntaxhighlight lang="python">
|<syntaxhighlight lang="python">
def index(request):
def index(request):
c = 모델.objects.get(pk=기본키값) # 객체를 불러오고...
c.delete()
c.delete()
</syntaxhighlight><syntaxhighlight lang="python">
</syntaxhighlight><syntaxhighlight lang="python">
def index(request):
def index(request):
목록 = 모델.objects.exclude(칼럼명 = True, >0 따위의 조건들...).delete() # 조건을 제외한 것들을 삭제한다.
목록 = 모델.objects.exclude(조건).delete() # 조건을 제외한 것들을 삭제한다.
</syntaxhighlight>
</syntaxhighlight>
|}
|}
===객체의 속성에 접근===
모델.속성 형태로 속성에 접근 가능하다. 일반적으로
<code>객체 = 모델.objects.get(id=pk)</code>
객체.속성 형태로 접근한다.(수정을 하고 반드시 저장을 해주어야 한다.)
==데이터 불러오기==
==데이터 불러오기==
===객체 다 가져오기===
===객체 다 가져오기===
# 모델.objects는 객체목록을 받는다는 의미이다.
# 모델.objects는 객체목록을 받는다는 의미이다.
def index(request):
def index(request):
목록 = 모델.objects.filter(칼럼명="칼럼") # True가 나오는, >0 따위의 조건들을 건다.
목록 = 모델.objects.filter(칼럼="내용") # True가 나오는, >0 따위의 조건들을 건다.
목록2= 목록.objects.filter(조건들..) # 걸러진 객체들에 또다시 필터를 걸 수도 있다.
목록2= 목록.objects.filter(조건들..) # 걸러진 객체들에 또다시 필터를 걸 수도 있다.
</syntaxhighlight>필터는 몇번이라도 걸 수 있는데, 장고는 지연평가 방식을 사용하기 때문에 실제로 데이터를 질의하는 것은 한 번 뿐이다. 덕분에 부하가 걸리지 않고도 filter를 자유롭게 사용할 수 있다.<syntaxhighlight lang="python">
</syntaxhighlight>필터는 몇번이라도 걸 수 있는데, 장고는 지연평가 방식을 사용하기 때문에 실제로 데이터를 질의하는 것은 한 번 뿐이다. 덕분에 부하가 걸리지 않고도 filter를 자유롭게 사용할 수 있다.<syntaxhighlight lang="python">
def index(request):
def index(request):
목록 = 모델.objects.filter(칼럼명>0)
목록 = 모델.objects.filter(조건)
.filter(조건)
.filter(조건)
.filter(조건2)
.filter(조건2)
def index(request):
def index(request):
목록 = 모델.objects.exclude(칼럼명 = True, >0 따위의 조건들...)
목록 = 모델.objects.exclude(칼럼명 = True, __gte=0 따위의 조건들...)
</syntaxhighlight>
</syntaxhighlight>
===특정단어 검색===
===특정단어 검색===
#모델.objects는 객체목록을 받는다는 의미이다.
#모델.objects는 객체목록을 받는다는 의미이다.
def index(request):
def index(request):
목록 = 모델.objects.order_by('-create_date') #create_date속성의 역순으로 정리하라는 의미.
목록 = 모델.objects.order_by('-create_date') # create_date속성의 역순으로 정리하라는 의미.
context={'템플릿에서 쓸 변수명':목록)
context={'템플릿에서 쓸 변수명':목록)
return render(request, '템플릿', context)
return render(request, '템플릿', context)
</syntaxhighlight>order_by('?') 로 두면 객체들을 랜덤하게 배치한다.
</syntaxhighlight>order_by('?') 로 두면 객체들을 랜덤하게 배치한다.
===새로운 속성 만들어 사용하기===
===새로운 속성 만들어 사용하기===
정렬을 하는데 하위 모델의 갯수를 세어 정렬해야 할 때엔 새로운 속성을 만들어 적용해야 한다.
정렬을 하는데 하위 모델의 갯수를 세어 정렬해야 할 때엔 새로운 속성을 만들어 적용해야 한다.
<code>모델.objects..order_by(Count='answer', '-create_date')</code> 형태로 작성이 되진 않는다. order_by 안의 괄호에 들어가야 하는 건 항상 속성 뿐이다.
<code>모델.objects.order_by(Count='answer', '-create_date')</code> 형태로 작성이 되진 않는다. order_by 안의 괄호에 들어가야 하는 건 항상 속성 뿐이다.
때문에 annotate를 사용해 새로운 속성을 만들어준 후에 oreder_by를 써야 한다. <code>모델.objects.annotate(num=Count('하위모델')).order_by('-num', '-create_date')</code> # -num으로 우선배치한 후, 같은 숫자가 나온다면 만들어진 순서로 우열을 정한다.)
때문에 annotate를 사용해 새로운 속성을 만들어준 후에 oreder_by를 써야 한다. <code>모델.objects.annotate(num=Count('하위모델')).order_by('-num', '-create_date')</code> # -num으로 우선배치한 후, 같은 숫자가 나온다면 만들어진 순서로 우열을 정한다.)
==유의==
==유의==
탬플릿에선 위 속성들을 그대로 사용할 수 있지만, 괄호는 빼주고 기입한다.<syntaxhighlight lang="python">
탬플릿에선 위 속성들을 그대로 사용할 수 있지만, 괄호는 빼주고 기입한다.
[[분류:장고 뷰]]
[[분류:장고 뷰]]