주어진 공급자에 대한 모든 사용자의 목록을 가져와야합니다. 사용자는 여러 공급자를 가질 수 있으며 공급자는 여러 사용자를 가질 수 있습니다.다음 쿼리를 향상시키는 방법
이나는 다음과 같은 테이블이 있습니다 :
class Provider(models.Model):
provider = models.CharField(max_length=100, primary_key=True)
class UserProfile(models.Model):
user = models.ForeignKey(User, primary_key=True)
provider = models.ManyToManyField(Provider, db_column='provider')
내보기에서
:
providers = Provider.objects.order_by('provider')
그리고 내 템플릿 :
{% for provider in providers %}
<tr>
<td class="provider">
{{ provider.provider }}
</td>
<td class="email">
{% for profile in provider.userprofile_set.all %}
{{ profile.user }}
{% endfor %}
</td>
</tr>
{% endfor %}
이 생산 여기에 지금까지 무엇을 가지고 약 250 개의 쿼리가 템플릿의 Provider QuerySet을 반복하고 있습니다. 위의 개선 방법은 무엇입니까? 여기에 prefetch_related
또는 select_related
을 사용하는 방법이 있습니까?
네, 처음 시도한 방법입니다. 아무런 개선이 없었습니다. – David542
아, "all()"을 추가하려고 했습니까? – Besnik
이 경우 모두 중복됩니다. (테스트는 똑같습니다.) – David542