Django ORM에서 select_관련 및 prefetch_관련 메소드는 데이터베이스 쿼리의 관계 관리를 위한 고유한 목적을 제공합니다.
select_관련
Django의 select_관련 메소드는 SQL 조인을 수행하여 데이터베이스 쿼리 중에 관련 모델 데이터를 가져옵니다. 관련 모델의 선택된 필드를 효율적으로 검색하여 후속 쿼리의 필요성을 최소화합니다. 이 접근 방식은 외래 키 또는 OneToOneField 연결과 관련된 관계에 특히 적합합니다.
prefetch_관련
select_관련과 달리 prefetch_관련은 SQL 조인을 수행하지 않습니다. 대신, 관련 모델을 검색하기 위해 별도의 쿼리를 실행합니다. 그런 다음 데이터는 Python에서 "결합"됩니다. 이 방법은 ManyToManyFields 또는 역외래 키 연결과 관련된 관계에 유용합니다.
예
다음 모델 설정을 고려하세요.
<code class="python">class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): author = models.ForeignKey(Author)</code>
가져오려면 select_관련을 사용하여 관련 도서가 있는 저자:
<code class="python">author = Author.objects.select_related('book_set').get(pk=1) for book in author.book_set.all(): print(book.title)</code>
prefetch_관련을 사용하여 관련 도서가 있는 저자를 가져오려면:
<code class="python">authors = Author.objects.prefetch_related('book_set').all() for author in authors: for book in author.book_set.all(): print(book.title)</code>
두 가지 방법 모두 관련 데이터를 검색하는 반면, select_관련은 단일에 적합합니다. -제한된 중복 열이 있는 개체 관계. 대조적으로, prefetch_관련은 데이터베이스 통신을 최소화하기 위해 다대다 관계 또는 희박한 역외래 키 관계에 선호됩니다. 그러나 데이터의 Python 표현에서 중복된 개체가 발생할 수 있습니다.
위 내용은 Django ORM의 select_관련과 prefetch_관련을 언제 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!