ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • django.10 django_QurySet API
    Django 2020. 11. 30. 12:25
    728x90

    Model method 종류

    all() , filter() , exclude() , values() , values_list() , get() , create() , count() , exists() , update() , delete() , first() , last() ..

    QuerySet을 반환하는 경우 :  <QuerySet [<Category: Category object (1)>, <Category: Category object (2)>]>

    (list 형 자료구조 확인)

    그렇지 않은 경우 : <Category: Category object (1)> , 9 , True ..

     

    장고에서는 위 메서드와 같은 것들을 QuerySet API라 부른다.


    all() : 테이블 데이타를 전부 가져오기 위해서는 Feedback.objects.all() 과 같이 all() 메서드를 사용

    get() : 하나의 Row만을 가져오기 위해서는 get() 메서드를 사용

    filter() : 특정 조건에 맞는 Row들을 가져오기 위해서는 filter() 메서드를 사용

    exclude() : 특정 조건을 제외한 나머지 Row들을 가져오기 위해서는 exclude() 메서드를 사용

    count() : 데이타의 갯수(row 수)를 세기 위해 count() 메서드를 사용

    order_by() : 데이타를 키에 따라 정렬하기 위해 order_by() 메서드를 사용한다. order_by() 안에는 정렬 키를 나열할 수 있는데, 앞에 -가 붙으면 내림차순이다. 아래는 id를 기준으로 올림차순, createDate로 내림차순으로 정렬하게 된다.

    rows = Feedback.objects.order_by('id', '-createData')

    values() : 테이블의 원하는 column만 가져올때 사용 

    values_list() : values()는 키와 값의 형태로 가져오는데 이를 튜플 형태의 리스트로 반환해줌

    create() : 테이블의 원하는 값을 새로 생성할때 사용

    update() : 테이블의 값을 수정할때 사용

    delete() : 값을 삭제할때 사용

    first() : Queryset 결과의 내용 중 가장 첫번째 row만 반환

    last() : Queryset 결과의 내용 중 가장 마지막 row만 반환


    1. all()  / QuerySet 반환

    Menu.objects.all()
    #
    <QuerySet [<Menu: Menu object (1)>, <Menu: Menu object (2)>, <Menu: Menu object (3)>, <Menu: Menu object (5)>]>
    Drink.objects.all()
    #
    <QuerySet [<Drink: Drink object (1)>, <Drink: Drink object (2)>, <Drink: Drink object (3)>, <Drink: Drink object (4)>, <Drink: Drink object (5)>, <Drink: Drink object (6)>, <Drink: Drink object (7)>, <Drink: Drink object (8)>, <Drink: Drink object (9)>, <Drink: Drink object (10)>, <Drink: Drink object (11)>, <Drink: Drink object (12)>, <Drink: Drink object (13)>]>

    해당 테이블을 구성하는 모든 Primary Key 값 반환 -> (PK)


    2. filter() / QuerySet 반환

    2.1  "카드" 삭제 후 "카드" 재 생성 (delete & filter)

    >>> Menu.objects.filter(name="카드").delete()
    (1, {'products.Menu': 1})
    >>> Menu.objects.create(name="카드")
    <Menu: Menu object (5)>
    

    # 삭제 후 id값을 지정해주는 방식으로 접근하지 않을 경우 삭제된 id를 건너뛰고 생성됨

    2.2 

    >>> Menu.objects.filter(name="상품")
    <QuerySet [<Menu: Menu object (3)>, <Menu: Menu object (6)>]>

    # QuerySet 반환 - (PK, Id값)


    3. exclude() / QuerySet 반환

    >>> Menu.objects.exclude(name="상품")
    <QuerySet [<Menu: Menu object (1)>, <Menu: Menu object (2)>, <Menu: Menu object (5)>]>

    # 상품을 제외한 나머지의 결과를 보여줌

     

    4. values () / QuerySet 반환

    >>> Menu.objects.values()
    <QuerySet [{'id': 1, 'name': '음료'}, {'id': 2, 'name': '푸드'}, {'id': 3, 'name': '상품'}, {'id': 5, 'name': '카드'}, {'id': 6, 'name': '상품'}]>

    # 딕셔너리 형태의 리스트로 반환

     

    5. values_list() / QuerySet 반환

    Menu.objects.values_list()
    <QuerySet [(1, '음료'), (2, '푸드'), (3, '상품'), (5, '카드'), (6, '상품')]>

    # 튜플 형태의 리스트로 반환

     

    6. first () /  QuerySet 으로 반환하지 않음

    >>> a1 = Menu.objects.filter(name="상품")
    >>> a1.first()
    <Menu: Menu object (3)>

    # first ()만 단독으로 쓸 수 없음 / Queryset 결과가 필요하기 때문

     

    7. last() /  QuerySet 으로 반환하지 않음

    >>> a1.last()
    <Menu: Menu object (6)>

    # last ()만 단독으로 쓸 수 없음 / Queryset 결과가 필요하기 때문

    728x90

    'Django' 카테고리의 다른 글

    django.9 django란?  (0) 2020.11.30
    django.8 Django Project 와 App 이해  (0) 2020.11.28
    wecode_CRUD_1 과제  (0) 2020.11.28
    django.6 가상환경 내에서 data 집어넣기  (0) 2020.11.28
    django.4 스타벅스 모델링 과제_wecode  (0) 2020.11.26
Designed by Tistory.