#30543: admin.E108 is raised on fields accessible only via instance.
-------------------------------------+-------------------------------------
Reporter: ajcsimons | Owner: ajcsimons
Type: Bug | Status: closed
Component: Core (System | Version: master
checks) |
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by goblinJoel):
(I found this thread after already finding the commit that caused this
problem for me, so this is copied/edited from
[https://github.com/django/django/commit/47016adbf54b54143d4cf052eeb29fc72d27e6b1#commitcomment-34636977
my comment there])
While upgrading from Django 1.11 to 2.2, I found this change causes one of
our custom field types to fail system checks when used in an admin's
list_display. The dev who made the field had overridden
contribute_to_class() to assign a descriptor class that raises an
AttributeError on __get__() if no instance is supplied, making the field
attribute only accessible from instances and not from the class itself.
Previously, this still worked, as model._meta.get_field(item) returned
true. Now, hasattr() must also be true.
I'm pretty sure I can change our __get__() to just return the descriptor
in that case, as ImageField's descriptor does
[https://github.com/django/django/commit/9f6b704769ba5bc0daafc25340d3dc28b18d8fb1
from 1.10 on], but I thought I'd note this in case there was some reason
the behavior I described should be supported.
--
Ticket URL: <https://code.djangoproject.com/ticket/30543#comment:11>
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 view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.7e05ca6ef682541675fd8c99c15ab0fd%40djangoproject.com.