我需要獲取給定提供者的所有用戶列表。用戶可能有多個提供者,而提供者可能有多個用戶。以下是我迄今爲止:如何改進以下查詢
我有以下表格:
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個查詢,因爲我正在迭代模板中的提供者查詢集。我將如何改進上述 - 有沒有在這裏使用prefetch_related
或select_related
的方法?
是的,這就是我最初的嘗試,沒有任何改善。 – David542
哦,你有沒有試過添加「all()」? – Besnik
在這種情況下,所有東西都是多餘的 - (測試它完全一樣)。 – David542