クエリセットで「in」演算子を使用すると、最初の呼び出しで失敗します。
編集4:
誰でも簡単にテストできるように、問題を次のコードに単純化しました。
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Project(models.Model):
categories = models.ManyToManyField(Category, related_name='projects')
category_list = Category.objects.prefetch_related('projects')
print category_list # [<Category: Category object>, <Category: Category object>]
print category_list[0] in category_list # False
print category_list[0] in category_list # True
「prefetch_related」を削除して代わりに「all」を使用すると、問題はなくなりますが、これによりさらに多くの DB 呼び出しが使用されます。
prefetch_related を使用して初めて正しい結果を得るにはどうすればよいですか?