Opened 13 years ago
Closed 12 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 , 13 years ago
Cc: | added |
---|
comment:3 by , 13 years ago
Cc: | added |
---|
comment:4 by , 13 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 , 13 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 , 12 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.