我需要获取给定提供商的所有用户列表。一个用户可能有多个提供者,一个提供者可能有多个用户。这是我到目前为止所拥有的:
我有以下表格:
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
在这里?