== 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.
* status: new => closed
* resolution: => wontfix
Comment:
From [https://www.python.org/dev/peps/pep-0020/ The Zen of Python],
"Explicit is better than implicit." Proposals for design decisions like
this are better made on the DevelopersMailingList but I doubt there would
be consensus to do this.
--
Ticket URL: <https://code.djangoproject.com/ticket/29907#comment:1>
Comment (by Simon Charette):
Hey there, I've personally wished `get(pk)` was supported in the past but
as Tim said this should be brought to the mailing list to try to get a
consensus.
--
Ticket URL: <https://code.djangoproject.com/ticket/29907#comment:2>
Comment (by Tim Graham):
[https://groups.google.com/d/topic/django-
developers/T7ZLFeM0Ia8/discussion django-developers thread]
--
Ticket URL: <https://code.djangoproject.com/ticket/29907#comment:3>