#29907: Queryset.get(), Queryset.filter(), and Q() with positional arguments
-------------------------------------+-------------------------------------
Reporter: antwan | Owner: nobody
Type: New | Status: new
feature |
Component: Database | Version: master
layer (models, ORM) |
Severity: Normal | Keywords:
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
I'm creating this ticket to see if there is interest to implement
positional arguments in queryset filtering.
== Current situation ==
Currently the only way to use positional arguments to filter can be
either:
* Passing a single or multiple Q objects:
{{{
MyClass.objects.filter(Q(key=value))
MyClass.objects.filter(Q(key=value), Q(other_key=value))
}}}
* Passing a couple is also working (not sure if this is a happy accident)
{{{
MyClass.objects.filter((key, value))
}}}
* Combination of both is also proven to work
{{{
MyClass.objects.filter((key, value), Q(other_key=value))
}}}
== Suggestion ==
My feature suggestion is to leverage the case when a non-Q / non couple
object is passed, so it implicitly interpreted as the value for the
model's `pk`.
This could ease/simplify code by omitting `pk` when this is the only
filter used:
{{{
MyClass.objects.get(value)
# Translates into: MyClass.objects.get(pk=value)
}}}
or
{{{
MyClass.objects.filter(value)
# Translates into: MyClass.objects.filter(pk=value)
}}}
or
{{{
MyClass.objects.filter(Q(value))
# Translates into: MyClass.objects.filter(Q(pk=value))
}}}
Do you think it's worth it? It could be leveraged to simplify many
situations.
--
Ticket URL: <https://code.djangoproject.com/ticket/29907>
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.e27ae93027f68ef4a04f6a1c68a5e75f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.