django-orm 조회표 기록의 다양한 방법

32100 단어 django
django 조회표 기록의 13가지 방법
all () 결과는queryset 형식입니다
>>> models.Book.objects.all()
<QuerySet [<Book: Book object>, <Book: Book object>, <Book: Book object>]>

filter () 조건 조회 (아래에도 여러 가지 방법이 있습니다. 아래 참조)
>>> ret = models.Book.objects.filter(id=5)
>>> ret
<QuerySet [<Book: Book object>]>

get () 는 모델 대상입니다. 하나는 두 가지 오류가 발생할 수 있습니다.
  • 1 데이터를 찾을 수 없으면 오류 보고: Book matching query does not exist.
  • 2 반환값이 하나 이상이면 오류 보고: returned more than one Book – it returned 13!
  • >>> ret = models.Book.objects.get(id=5)
    >>> ret
    <Book: Book object>
    

    exclude () 제외
  • object 호출 가능,models.Book.objects.exclude(book name startswith='활성')
  • queryset 형식 데이터는 호출할 수 있습니다.
  • >>> ret = models.Book.objects.all()
    >>> ret.exclude(id=5)
    <QuerySet [<Book: Book object>, <Book: Book object>]>
    

    order_by () 정렬
    models.Book.objects.all().order_by('-price','id')  
    #   mysql  order by price desc,id asc;
    

    reverse() 반전
    models.Book.objects.all().order_by('id').reverse()
    #           
    

    count () 계수, 반환 결과의 수량 통계
    >>> ret = models.Book.objects.all().count()
    >>> ret
    3
    

    first () 는 첫 번째 데이터를 되돌려줍니다. 결과는 모델 대상 형식입니다.
    >>> ret = models.Book.objects.all()
    >>> ret.first()
    <Book: Book object>
    >>> ret.first().id
    5
    

    last () 가 마지막 데이터를 되돌려줍니다. 결과는 모델 대상 형식입니다.
    >>> ret = models.Book.objects.all()
    >>> ret.last()
    <Book: Book object>
    >>> ret.last().id
    11
    
    

    exists () 반환 결과 집합에 데이터가 있는지 판단
    >>> ret = models.Book.objects.filter(id=999).exists()
    >>> ret
    False
    >>> ret = models.Book.objects.filter(id=11).exists()
    >>> ret
    True
    
    

    values () (되돌아오는queryset, 사전 형식 데이터)
    >>> ret = models.Book.objects.all().values('id','book_name')
    >>> ret
    <QuerySet [{'id': 5, 'book_name': '1'}, {'id': 6, 'book_name': '2'}, {'id': 11, 'book_name': '23'}]>
    

    values_list (되돌아오는queryset, 안에 그룹 형식 데이터)
    >>> ret = models.Book.objects.all().values_list('id','book_name')
    >>> ret
    <QuerySet [(5, '1'), (6, '2'), (11, '23')]>
    
    

    values 또는values 호출list는 Objects 컨트롤러입니다. 모든 데이터를 되돌려줍니다.
    >>> ret = models.Book.objects.values()
    >>> ret
    <QuerySet [
    	{'id': 5, 'book_name': '1', 'price': 2.0, 'shijian': '2018-03-22', 'press': 'admin'}, 
    	{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, 
    	{'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'}
    ]>
    
    

    distinct () 무게 제거,values 설정과valueslist 사용
    >>> models.Book.objects.all().values('book_name').distinct()
    <QuerySet [{'book_name': '1'}, {'book_name': '2'}, {'book_name': '23'}]>
    

    filter 이중 밑줄 조회
    __in price 값은 이 세 개 중 임의의 대상과 같다
    Book.objects.filter(price__in=[100,200,300]) 
    

    __gt 이상
    >>> ret = models.Book.objects.filter(price__gt=1233)
    >>> ret.values()
    <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}]>
    
    

    __gte 이상
    >>> ret = models.Book.objects.filter(price__gte=2)
    >>> ret.count()
    3
    
    

    lt는
    >>> ret = models.Book.objects.filter(price__lt=1234)
    >>> ret.count()
    2
    
    

    lte 이하
    >>> ret = models.Book.objects.filter(price__lte=1234)
    >>> ret.count()
    3
    
    

    __range 는 35 보다 크고, 38 보다 작다
    >>>ret = models.Book.objects.filter(price__range=[35,38])
    >>>ret.count()
    3
    

    __contains는 이 문자열의 데이터를 포함합니다
    >>> ret = models.Book.objects.filter(book_name__contains='2')
    >>> ret.values()
    <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, {'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'}]>
    
    

    __icontains는 대소문자를 구분하지 않습니다
    ret = models.Book.objects.filter(book_name__icontains='py')
    

    __startswith는 무엇으로 시작합니까 - endswith (무엇으로 끝납니까) - istartswith (대소문자 구분 없음)
    >>> ret = models.Book.objects.filter(book_name__startswith='2')
    >>> ret.values()
    <QuerySet [{'id': 6, 'book_name': '2', 'price': 1234.0, 'shijian': '2013-3-2', 'press': 'sdf'}, {'id': 11, 'book_name': '23', 'price': 11.0, 'shijian': '2019-09-10', 'press': '234'}]>
    
    

    __year 질의 연도month월
    ret = models.Book.objects.filter(publish_date__year='2018') 
    

    __isnull 필드 값이 비어 있는 데이터
    models.Book.objects.filter(publish_date__isnull=True)
    

    좋은 웹페이지 즐겨찾기