特定のプロバイダーのすべてのユーザーのリストを取得する必要があります。ユーザーは複数のプロバイダーを持つことができ、プロバイダーは複数のユーザーを持つことができます。これが私がこれまでに持っているものです:
次のテーブルがあります。
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 %}
テンプレートで Provider QuerySet を反復処理しているため、これにより約 250 のクエリが生成されます。上記をどのように改善しますか -prefetch_related
またはselect_related
ここで使用する方法はありますか?