Opened 14 years ago
Closed 13 years ago
#16034 closed New feature (wontfix)
get_field_display: Django needs a filter to allow get_field_display for a dynamic field
| Reported by: | thepapermen | Owned by: | nobody | 
|---|---|---|---|
| Component: | Template system | Version: | 1.3 | 
| Severity: | Normal | Keywords: | |
| Cc: | thepapermen, Miguel Araujo | Triage Stage: | Design decision needed | 
| Has patch: | no | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description (last modified by )
{{ SomeModel.get_field_display }} is nice, but it is handy only for a specified field.
If One wants to write a more universal template which should work with any set of fields, this won't work.
What I propose is a universal filter which should provide human-readable name for a field of any type.
For example, like this:
<table>
{% for item in query %}
<tr>
{% for field in fields %}
<td>{{item|human_readable:field}}</td>
{% endfor %}
</tr>
{% endfor %}
<table>
This will be a simple yet powerful way to provide nice human-readable info from Django models and forms.
Change History (6)
comment:2 by , 14 years ago
| Cc: | added | 
|---|
comment:3 by , 14 years ago
| Cc: | added | 
|---|
comment:4 by , 14 years ago
| Description: | modified (diff) | 
|---|---|
| Triage Stage: | Unreviewed → Design decision needed | 
The idea and the API should be discussed on the mailing list before this ticket can be accepted.
comment:5 by , 14 years ago
| UI/UX: | unset | 
|---|
Updating the hypothetical solution:
def human_readable(value, arg): if hasattr(value, 'get_' + str(arg) + '_display'): return getattr(value, 'get_%s_display' % arg)() elif hasattr(value, str(arg)): if callable(getattr(value, str(arg))): return getattr(value, arg)() else: return getattr(value, arg) else: try: return value[arg] except KeyError: return settings.TEMPLATE_STRING_IF_INVALID
comment:6 by , 13 years ago
| Resolution: | → wontfix | 
|---|---|
| Status: | new → closed | 
This doesn't look sufficiently general-purpose for inclusion in Django.
Django's contributing guide recommends to discuss feature requests on the django-developers mailing list. Please make you case there and re-open the ticket if the thread shows sufficient interest in this feature.
I'm talking about something like this:
But secure against showing _meta attributes.