意見:
transfer_details = TransferDetail.objects.filter(user=request.user).select_related('transfermethod_set')
print transfer_details.filter(method__name='PayPal')
モデル:
class TransferMethod(models.Model):
name = models.CharField(max_length=30)
...
class TransferDetail(models.Model):
data = models.TextField()
...
method = models.ForeignKey(TransferMethod)
user = models.ForeignKey(User)
データベースをさらに呼び出すことなく、1 行目の transfer_details QuerySet が使用されることを期待しています。
私は何が欠けていますか?
更新 1
したがって、これらの 2 つの行があるときに、追加のクエリがないことがわかりました。
x = transfer_details.filter(method__name='PayPal')
x2 = transfer_details.filter(method__name='Something')
しかし、次の 2 行を追加すると、2 つの DB クエリが作成されます。
list(x[:1])
list(x2[:1])
内部で何が起こっているのか、余分な呼び出しを避けるにはどうすればよいですか?
更新 2
私は試した:
transfer_details.get(method__name='PayPal').data
...
また、2 つのクエリを作成しています。