Admin change list swallows unrelated AttributeErrors from callable display fields
|Reported by:||Piet Delport||Owned by:||nobody|
|Cc:||Triage Stage:||Design decision needed|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
If a callable display field on a model or model admin raises either an
AttributeError, the interface currently captures the error, and renders the field as
This behavior is surprising and confusing when the
AttributeError originates in unrelated user code called by the display field: errors like third-party app bugs or missing settings get silenced, and the field's content simply becomes "(None)". There's no hint to a novice about what went wrong, or where to look next.
The code responsible for this is in templatetags/admin_list.py's
lookup_field(). As far as i can tell, all the valid empty fields cases are covered by results of
None, and not
AttributeError: a missing attribute specified in
list_display normally result in
If there's no compelling reason to capture
AttributeError like this, can it simply be removed from the exception list, and allowed to propagate?