#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.

Reply via email to