Django ORM에서 select_관련 및 prefetch_관련 메소드는 데이터베이스 쿼리의 관계를 관리하기 위한 고유한 목적을 제공합니다.
select_관련
Django의 select_관련 메소드는 SQL 조인을 수행하여 데이터베이스 쿼리 중에 관련 모델 데이터를 가져옵니다. 관련 모델의 선택된 필드를 효율적으로 검색하여 후속 쿼리의 필요성을 최소화합니다. 이 접근 방식은 외래 키 또는 OneToOneField 연결과 관련된 관계에 특히 적합합니다.
prefetch_관련
select_관련과 달리 prefetch_관련은 SQL 조인을 수행하지 않습니다. 대신, 관련 모델을 검색하기 위해 별도의 쿼리를 실행합니다. 그런 다음 데이터는 Python에서 "결합"됩니다. 이 방법은 ManyToManyFields 또는 역외래 키 연결과 관련된 관계에 유용합니다.
예
다음 모델 설정을 고려하세요.
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author)
select_관련을 사용하여 관련 도서가 있는 저자를 가져오려면:
author = Author.objects.select_related('book_set').get(pk=1)
for book in author.book_set.all():
print(book.title)
prefetch_관련된 도서를 사용하여 저자를 가져오려면:
authors = Author.objects.prefetch_related('book_set').all()
for author in authors:
for book in author.book_set.all():
print(book.title)
두 방법 모두 관련 데이터를 검색하는 반면, select_관련은 제한된 중복 열이 있는 단일 개체 관계에 최적입니다. 대조적으로, prefetch_관련은 데이터베이스 통신을 최소화하기 위해 다대다 관계 또는 희박한 역외래 키 관계에 선호됩니다. 그러나 데이터의 Python 표현에서 중복된 객체가 발생할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3