Django에서 데이터 조회 결과를 정렬하는 방법

2315 단어
Django 응용 프로그램에서 검색 결과를 알파벳순으로 정렬하기를 원할 수도 있습니다.그럼orderby () 이 방법으로 해결할 수 있습니다.

>>> Publisher.objects.order_by("name")
[, ]


이전 all () 예와 차이가 많지 않고, SQL 문장에 지정한 정렬 부분이 많아졌습니다.

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name;


모든 필드를 정렬할 수 있습니다.

>>> Publisher.objects.order_by("address")
[, ]

>>> Publisher.objects.order_by("state_province")
[, ]


여러 필드를 기준으로 정렬해야 하는 경우(첫 번째 필드의 값이 같은 경우 두 번째 필드가 사용됨) 다음과 같이 여러 매개변수를 사용할 수 있습니다.

>>> Publisher.objects.order_by("state_province", "address")
 [, ]


또한 리버스 정렬을 지정하여 앞에 마이너스-접두어를 붙일 수도 있습니다.

>>> Publisher.objects.order_by("-name")
[, ]


유연하지만 매번 orderby () 좀 부스스해 보여요.대부분의 시간 동안 너는 보통 일부 필드만 정렬할 수 있다.이 경우 Django는 모델의 기본 정렬 방법을 지정할 수 있습니다.

class Publisher(models.Model):
  name = models.CharField(max_length=30)
  address = models.CharField(max_length=50)
  city = models.CharField(max_length=60)
  state_province = models.CharField(max_length=30)
  country = models.CharField(max_length=50)
  website = models.URLField()

  def __unicode__(self):
    return self.name

  **class Meta:**
    **ordering = ['name']**


이제 새로운 개념을 접해 봅시다.class Meta, Publisher 클래스의 정의에 내장되어 있습니다. (class Publisher가 정격이라면, class Meta는 그 아래에 네 개의 빈칸을 줄여야 합니다. - Python의 전통을 누르십시오.)모든 모델 클래스에서 메타 클래스를 사용하여 특정 모델과 관련된 옵션을 설정할 수 있습니다.부록 B에 메타에서 선택할 수 있는 모든 참고가 있습니다. 지금ordering이라는 옵션을 주목하면 됩니다.만약 당신이 이 옵션을 설정했다면, 검색할 때 일부러 order를 사용하지 않는 한...by (), 그렇지 않으면 Django의 데이터베이스 API를 사용하여 검색할 때,Publisher 대상의 반환 값은 기본적으로name 필드에 따라 정렬됩니다.

좋은 웹페이지 즐겨찾기