Opened 8 months ago

Closed 8 months ago

Last modified 5 months ago

#35154 closed New feature (wontfix)

QuerySet implements `contains` but not `__contains__` — at Version 1

Reported by: fidoriel Owned by: nobody
Component: Database layer (models, ORM) Version: 5.0
Severity: Normal Keywords: queryset contains
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Mariusz Felisiak)

This is a similar proposal to https://code.djangoproject.com/ticket/31561, but it is not the same. Currently using

x in myQuerySet

results in python using the fallback solution: https://docs.python.org/3/reference/expressions.html#membership-test-details
Because https://groups.google.com/g/django-developers/c/NZaMq9BALrs/m/OCNTh6QyCAAJ deiced to implement contains in https://code.djangoproject.com/ticket/24141
I think it is only consistent to have the same behavior implemented in __contains__. I would expect that, it is also a more efficient implementation and unifies django behavior. Nevertheless, documentation is needed why this inconsistency exists. I was not able to find a reason. Because the mailing list agreed on adding contains, this is discussed behavior. Why was __contains__ not added in the first place? To not have breaking changes? I cannot see what would break.

As said in https://code.djangoproject.com/ticket/31561 a queryset could be a collection to make typing easier. But this is not the intention of this issue.

Change History (1)

comment:1 by Mariusz Felisiak, 8 months ago

Description: modified (diff)
Resolution: wontfix
Status: newclosed
Type: UncategorizedNew feature

Why was __contains__ not added in the first place?

Have you read the discussion that you mention in the ticket? or comments in #24141? The entire discussion is about __contains__ and there was a consensus to add contains() instead.

Note: See TracTickets for help on using tickets.
Back to Top