콘텐츠로 이동

페이징 및 라인 수

다음 방법을 사용하면 쿼리의 행 수를 페이지화하고 제한할 수 있습니다.

  • paginate(page: int) -> QuerySet

  • limit(limit_count: int) -> QuerySet

  • offset(offset: int) -> QuerySet

  • 겟 () -> 모델

  • 첫 번째()-> 모델

  • 쿼리 세트 에이전트

    • QuerysetProxy.paginate(page: int) 방법
    • QuerysetProxy.limit(limit_count: int) 방법
    • QuerysetProxy.offset(offset: int) 방법

페이징

paginate(page: int, page_size: int = 20) -> QuerySet

페이지 번호 및 크기에 따라 오프셋 및 제한 방법 결합

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
클래스 트랙(ormar. 모델):
    ormar_config = ormar. OrmarConfig (
        데이터베이스 = 데이터베이스. 데이터베이스(DATABASE_URL),
        메타데이터 = sqlalchemy. 메타데이터(),
        테이블 이름 = "트랙"
    )

    ID: int = ormar. 정수(prial_key = 참)
    앨범: 옵션 [앨범] = ormar. ForeignKey (앨범)
    이름: str = ormar. 문자열(max_long = 100)
    위치: int = ormar. 정수()


트랙 = 트랙을 기다립니다. ts.page (3) .all ()
# 41행에서 시작하는 20개의 트랙을 반환합니다.
# (기본 페이지 크기 20)

파지네이트(2)는 오프셋(20) . 한계(20)와 동일합니다.

제한

limit(limit_count: int, limit_raw_sql: bool = None) -> QuerySet

결과를 필요한 상위 모델 수로 제한할 수 있습니다.

마스터 모델 대신 실제 데이터베이스 쿼리 행 수를 제한하려면 제한 \ _ 원시 \ _ sql 매개 변수 플래그를 사용하여 참으로 설정하십시오.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
클래스 트랙(ormar. 모델):
    Ormar. OrmarConfig (
        데이터베이스 = 데이터베이스. 데이터베이스(DATABASE_URL),
        메타데이터 = sqlalchemy. 메타데이터(),
        테이블 이름 = "트랙"
    )

    ID: int = ormar. 정수(prial_key = 참)
    앨범: 옵션 [앨범] = ormar. ForeignKey (앨범)
    이름: str = ormar. 문자열(max_long = 100)
    위치: int = ormar. 정수()


트랙 = 대기 트랙.ts. (1).all ()
# 하나의 트랙만 반환합니다

!!!행을 반환하지 않는 모든 메서드는 쿼리 세트 인스턴스를 명시적으로 반환하여 함께 연결할 수 있습니다.

1
2
3
따라서 `filter()`,`select_related()`,`limit()` 및 `offset()` 등과 같은 작업을 연결할 수 있습니다.

뭔가 `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

오프셋

offset(offset: int, limit_raw_sql: bool = None) -> QuerySet

필요한 마스터 모델 수로 결과를 상쇄할 수도 있습니다.

마스터 모델에서 실제 데이터베이스 쿼리 행 수를 간격띄우기하려면 _row_sql 매개 변수 플래그를 사용하여 True로 설정하십시오.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
클래스 트랙(ormar. 모델):
    Ormar. OrmarConfig (
        데이터베이스 = 데이터베이스. 데이터베이스(DATABASE_URL),
        메타데이터 = sqlalchemy. 메타데이터(),
        테이블 이름 = "트랙"
    )

    ID: int = ormar. 정수(prial_key = 참)
    앨범: 옵션 [앨범] = ormar. ForeignKey (앨범)
    이름: str = ormar. 문자열(max_long = 100)
    위치: int = ormar. 정수()


트랙 = 대기 트랙.ts. (1) .제한 (1) .all ()
# 트랙 하나만 반환하지만 이번에는 두 번째 트랙

!!!행을 반환하지 않는 모든 메서드는 쿼리 세트 인스턴스를 명시적으로 반환하여 함께 연결할 수 있습니다.

1
2
3
따라서 `filter()`,`select_related()`,`limit()` 및 `offset()` 등과 같은 작업을 체인으로 연결할 수 있습니다.

뭔가 `Track.object.select_related("album").filter(album__name="Malibu").offset(1).limit(1).all()`

겟

겟 (**kwargs) -> 모델

kwargs 설정 조건을 만족하는 데이터베이스에서 첫 번째 행을 가져옵니다.

설정된 조건이 없으면 db에서 pk별로 정렬된 마지막 행을 반환합니다. (필터링/제외는 조건을 설정하는 데도 사용할 수 없습니다.)

!!!팁 얻기에 대해 자세히 알아보려면 읽기/받기를 방문하십시오.

먼저

첫 번째()-> 모델

데이터베이스에서 기본 키 열별로 오름차순으로 정렬된 첫 번째 행을 가져옵니다.

!!!첫 번째 방문에 대해 자세히 알아보려면 먼저 읽으십시오.

QuerysetProxy 방법

관련 ManyTo많이 필드 및 ReverseForeignKey에 직접 액세스하면 관련 모델 목록이 반환됩니다.

그러나 쿼리 세트 API의 하위 집합도 표시되므로 상위 모델에서 직접 필터링, 생성, 관련 모델 선택 등을 할 수 있습니다.

페이징

페이징 기능은 위와 정확히 동일하지만 관계의 다른 쪽 끝에서 관련 개체를 페이징할 수 있습니다.

!!!QuerysetProxy에 대해 자세히 알아보려면 QuerysetProxy 섹션을 방문하십시오.

제한

위의 제한 함수와 동일하지만 관계의 반대편에서 관련 개체를 호출할 수 있습니다.

!!!QuerysetProxy에 대해 자세히 알아보려면 QuerysetProxy 섹션을 방문하십시오.

오프셋

오프셋 함수는 위의 함수와 동일하지만 관계의 반대편에서 관련 개체를 호출할 수 있습니다.

!!!QuerysetProxy에 대해 자세히 알아보려면 QuerysetProxy 섹션을 방문하십시오.