#27944: Have meta.get_field('pk') return the primary key field directly
------------------------------------------------+------------------------
               Reporter:  Josh Schneier         |          Owner:  nobody
                   Type:  Cleanup/optimization  |         Status:  new
              Component:  Uncategorized         |        Version:  master
               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                     |
------------------------------------------------+------------------------
 Follow up ticket discussion on this topic:
 https://github.com/django/django/pull/8148

 While fixing #27897, which is caused by calling `.get_field('pk')`, I ran
 across the fact that we are now checking `== 'pk'` before calling
 `.get_field` in several places. My proposal is to simply handle this
 special case inside of `get_field` directly.

 I have a patch but there is a single test regression on
 
[https://github.com/django/django/blob/master/django/db/models/fields/__init__.py#L232-L239|
 this system check]. My idea was to change the message and `obj` to
 `self.model` but I'm not sure what the backwards compatibility guarantees
 are for the message.

 Regardless I think we should do this because it will prevent a whole class
 of bugs in the future and `'pk'` is already special cased everywhere.

--
Ticket URL: <https://code.djangoproject.com/ticket/27944>
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.2e184dc8b3966dcba9fc885bfe9547d8%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to