4. 외래 키로 연결된 다른 표의 열을 기준으로 정렬할 수 있나요?¶
Category
모델과 Hero
모델이 다음과 같이 외래 키(ForeignKey)로 연결되어 있습니다.
class Category(models.Model):
name = models.CharField(max_length=100)
class Hero(models.Model):
# ...
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
아래 코드는 Hero
모델의 쿼리셋을 category 필드 순으로 정렬하되, category가 같은 항목은 (Hero
의) name 필드 순으로 정렬합니다.
Hero.objects.all().order_by(
'category__name', 'name'
)
'category__name'
인자에 이중 밑줄 기호(__
)를 사용한 것을 봐 주세요. 이중 밑줄 기호로 연결된 모델의 필드를 가리킬 수 있습니다.
SQL 질의문은 다음과 같이 생성됩니다.
SELECT "entities_hero"."id",
"entities_hero"."name",
-- more fields
FROM "entities_hero"
INNER JOIN "entities_category" ON ("entities_hero"."category_id" = "entities_category"."id")
ORDER BY "entities_category"."name" ASC,
"entities_hero"."name" ASC