Django 개념 다시
All()
쿼리셋 리턴
데이타베이스의 모든 객체 다 가져옴,
여기서, filter() or exclude()로 refine 가능
Entry.objects.all().filter(pub_date__year=2006)
CHAINing filters
Entry.objects.filter(
... headline__startswith='What'
... ).exclude(
... pub_date__gte=datetime.date.today()
... ).filter(
... pub_date__gte=datetime.date(2005, 1, 30)
... )
Filtered QUERYSETs are unique
q1 = Entry.objects.filter(headline__startswith="What")
q2 = q1.exclude(pub_date__gte=datetime.date.today())
q3 = q1.filter(pub_date__gte=datetime.date.today())
QuerySets are lazy
쿼리셋 메소드를 입력할 때 마다 쿼리셋이 도는것이 아니다. Evaluate될때 까지 아무것도 안한다.
q = Entry.objects.filter(headline__startswith="What")
q = q.filter(pub_date__lte=datetime.date.today())
q = q.exclude(body_text__icontains="food")
print(q)
print(q)가 될 때 움직인다.
In general, the results of a QuerySet aren't fetched from the database until you "ask" for them. When you do, the QuerySet is evaluated by accessing the database.
Retrieving a single object with get()
filter() 쿼리셋 리턴한다.
만약 한개의 객체만 있더라도 가져온다.
만약 너가 only one 객체인것을 안다면 GET 메소드를 써도 된다.
one_entry = Entry.objects.get(pk=1)
filter()with slice of [0] 와 get() 다른점이 있는데,
If there are no results that match the query, GET() will raise a DoesNotExist exception.
만약 get(name='냐옹이')
했는데 2개 이상이 나오면
it will raise MultipleObjectsReturned, which again is an attribute of the model class itself.
Limiting QuerySets
Entry.objects.all()[:5]
Entry.objects.all()[5:10]
Entry.objects.all()[:10:2]
0 ~ 4번째
5 ~ 9번쨰
0 ~ 9번쨰 , 2개씩 건너뜀 0 ,2, 4, 6, 8 번 째만 나옴
하지만 [-1] 이렇게 마지막꺼 가져오는 파이썬 문법은 안된다.
Values()
values(별표fields, 별표별표expressions)
Returns a QuerySet that returns dictionaries, rather than model instances, when used as an iterable.
This example compares the dictionaries of values() with the normal model objects:
Author And Source
이 문제에 관하여(Django 개념 다시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@noahshin__11/Django-개념-다시저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)