django 모델 조건 필터
3489 단어 Django
queryset 팁
#1 aggregate
models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Publisher(models.Model):
name = models.CharField(max_length=300)
class Book(models.Model):
name = models.CharField(max_length=300)
pages = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
rating = models.FloatField()
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
pubdate = models.DateField()
class Store(models.Model):
name = models.CharField(max_length=300)
books = models.ManyToManyField(Book)
#1.1 Avg 평균
>>> from django.db.models import Avg
>>> Book.objects.all().aggregate(Avg('price'))
{'price__avg': 34.35}
#1.2 Sum 구화
>>> from django.db.models import Sum
>>> Author.objects.aggregate(total_pages=Sum('book__pages'))
{'total_pages': int('4305.00')}
#1.3 맥스 최대
>>> from django.db.models import Max
>>> models.Book.objects.all().aggregate(Max('price'))
{'price__max': int('2154.00')}
>>> models.Book.objects.all().aggregate(a=Max('price'))
{'a': int('2154.00')}
#1.4 카운트 수
>>> from django.db.models import Count
>>> models.Book.objects.all().aggregate(Count('id'))
{'id__count': 10}
#2 annotate
aggregate는 전체queryset의 값을 계산하는데count()에 해당한다.annotate는queryset의 모든 값을 지정한 속성에 집합하여 그룹by
>>> from django.db.models import Count
>>> pubs = Publisher.objects.annotate(num_books=Count('book'))
>>> pubs
, , ...]>
>>> pubs[0].num_books
73
annotate는 하나의queryset 대상을 되돌려줍니다.queryset 대상 중의 모든obj에 하나의 속성이 추가되었습니다. (여기에num books 속성이 추가되었습니다.) 이 속성의 값은 바로 이 대상의Count ('book') 결과입니다. 즉 모든obj 대상의num책 값은 이 대상의 책 개수입니다
#3 사전
condtions: {'date': '2018-05-22'}
models.PlayUser.objects.filter(**condtions)
#4 조건 선택
시계 안의 똑같은 데이터를 제거하고
models.SpecialGamesBet.objects.all().distinct()
만약 어떤 필드에 따라 중복된 것을 제거해야 한다면, 데이터베이스가PostgreSQL이어야만 지원하고, 다른 데이터베이스는 필드별로 중복되는 것을 지원하지 않는다
models.SpecialGamesBet.objects.all().distinct("id") # PostgreSQL
#5 조건 매개변수
__exact like 'aaa'
__iexact ilike 'aaa'
__contains like '%aaa%'
__icontains ilike '%aaa%', sqlite ,contains icontains。
__gt
__gte
__lt
__lte
__in list
__startswith ...
__istartswith ...
__endswith ...
__iendswith ... ,
__range ...
__year
__month
__day
__isnull=True/False
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.