Django - ORM 사용 레코드(둘)
관리자 방법
반환 유형
설명
모델 클래스.objects.all()
QuerySet
테이블의 모든 데이터 반환
filter()
QuerySet
해당 데이터 반환
values()
ValuesQuerySet(QuerySet의 하위 클래스)
하나의 목록을 되돌려줍니다. 요소마다 사전입니다.
values_list()
ValuesListQuerySet(QuerySet의 하위 클래스)
목록을 되돌려줍니다. 그러나 그 요소는 사전이 아니라 원조입니다.
get()
모델 개체
조건을 충족시키는 대상 되돌리기;조건에 맞는 대상을 찾지 못하면 모델류를 일으킬 수 있습니다.DoesNotExist 예외,여러 개를 찾으면 모델류를 일으킬 수 있습니다.MultiObjectsReturned 예외
first()
모델 개체
첫 번째 데이터 반환
last()
모델 개체
마지막 데이터 반환
exclude()
QuerySet
부적합한 데이터 반환
order_by()
QuerySet
질의 결과 세트 정렬
reverse()
QuerySet
정렬 결과 반전
count()
int
질의 세트의 객체 수를 반환합니다.
exists()
bool
조회된 데이터가 존재하는지 판단하다
if QuerySet
이런 방법으로 빈 것인지 아닌지를 판단하는 것을 권장하지 않고QuerySet을 사용해야 한다.exists(), 조회 효율 높음from django.db import models
from django.db.models import F
class User(models.Model):
name = models.CharField(max_length=10)
age = models.IntegerField()
both = models.CharField(max_length=20)
F() 사용하지 않음
s = User.objects.get(name='xxx')
s.age += 1
s.save()
대상을 데이터베이스에서 찾아내 메모리에 넣은 후 계수하여 데이터베이스에 저장한다
F() 사용
s = User.objects.get(name='xxx')
s.age = F('age') + 1
s.save()
직접 데이터베이스에서 데이터를 찾아내고 계수한 후 데이터베이스를 변경합니다
>>> python manage.py shell
>>> from django.db.models import Q
>>> Poll.objects.get( Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
question__startswith='Who') # ,
>>> Poll.objects.get( Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
Q(question__startswith='Who')) # , Q
>>> Poll.objects.get( (Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)))&
Q(question__startswith='Who')) # ,& ”,”,
Q 클래스 중 F 클래스를 사용할 수 있습니까?관심 있는 거 해보셔도 돼요.
annotate(*args, **kwargs)
: QuerySet예:
from django.db.models import Count
s = User.objects.all().annotate(n=Count('age'))
s = User.objects.values('name').distinct()
aggregate(*args,**kwargs)
: 매개 변수는 집합 함수로 **kwargs
의 형식으로 매개 변수마다 이름을 짓는 것이 좋다from django.db.models import Count
# *args ,
s = User.objects.aggregate(Count('name'))
# **kwargs
s = User.objects.aggregate(n=Count('name'))
gt/gte/lt/lte
대응>,>=,:
-
age__gt=18
: 나이가 18보다 많음 in
대응 in: 필드 이름에 더블 밑줄contains/startswith/endswith
대응like: 필드명에 쌍밑줄range
대응between and
: 필드 이름에 더블 밑줄을 긋고range 뒷면값은 목록 -
- extra()
-
extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
- 복잡한where 문장을 실현하고 extra에서 select,where,tables 등 하나 이상의 파라메스 매개 변수를 지정할 수 있습니다.모든 매개 변수는 선택할 수 있지만, 최소한 간단한 예시를 사용해야 한다.
s = User.objects.extra(select={'is_recent':"both>'2000-01-01'"})s
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.