id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 30355 Specifying custom manager doesn't work with prefetch Kyle Mulka Akash Kumar Sen "When using prefetch and specifying a custom manager to use for a reverse relation, Django doesn't filter correctly. Here's an example: {{{ class Business(models.Model): name = models.CharField(max_length=255) def approved_reviews(self): return self.review_set(manager='approved_reviews').all() class ApprovedReviewsManager(models.Manager): def get_queryset(self): return super().get_queryset().filter(status=Review.APPROVED) class Review(models.Model): NEW = 1 APPROVED = 2 STATUS_CHOICES = ( (NEW, 'New'), (APPROVED, 'Approved'), ) business = models.ForeignKey(Business) text = models.CharField(max_length=255) status = models.IntegerField(choices=STATUS_CHOICES, default=NEW) objects = models.Manager() approved_reviews = ApprovedReviewsManager() class ApprovedReviewsTest(TestCase): def test_with_prefetch(self): business = Business() business.save() review = Review() review.business = business review.save() businesses = Business.objects.prefetch_related('review_set').all() business = businesses[0] approved_reviews = business.review_set(manager='approved_reviews').all() self.assertEqual(len(approved_reviews), 0) }}} The full test project is available here: https://github.com/mulka/django_prefetch_manager_bug/blob/master/review_site/tests.py " Cleanup/optimization closed Documentation dev Normal fixed Kourt Bailey Akash Kumar Sen Ready for checkin 1 0 0 0 0 0