#30721: Implicit related objects filtration because of the set Manager. -----------------------------------------+------------------------ Reporter: ApaDoctor | Owner: nobody Type: Bug | Status: new Component: Uncategorized | Version: 2.2 Severity: Normal | Keywords: Triage Stage: Unreviewed | Has patch: 0 Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -----------------------------------------+------------------------ When abstract model is defined with `objects` manager. And its child-model defines another manager - RelatedManager uses defined manager instead of objects.
{{{#!python class SomeAbstractModel(models.Model): class Meta: abstract = True objects = models.Manager() class CustomManager(models.Manager): def get_queryset(self): return super().get_queryset().filter(some_field=True) class SomeThing(SomeAbstractModel): some_field = models.BooleanField() parent = models.ForeignKey( "SomeThing", related_name="children", on_delete=models.SET_NULL, null=True ) custom_objects = CustomManager() }}} So we have abstract model, which defines `objects` manager for the model. Our model uses that abstract class. I created some objects: {{{#!python SomeThing(some_field=True).save() SomeThing.objects.bulk_create([SomeThing(some_field=bool(x%2), parent_id=1) for x in range(0,6)]) }}} After i reloaded shell i tried to make queries: {{{#!python >>> x = SomeThing.objects.get(id=1) >>> x.children.count() 3 >>>SomeThing.objects.filter(parent_id=1).count() 6 }}} Generated raw SQL for first query is: {{{#!sql SELECT COUNT(*) AS "__count" FROM "sapp_something" WHERE ("sapp_something"."some_field" = true AND "some_something"."parent_id" = 1) }}} -- Ticket URL: <https://code.djangoproject.com/ticket/30721> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/052.79589af8490c3aeab7c3052e2f7e39b5%40djangoproject.com.