Hello, This is a proposal related to ticket 10427: Bound field needs an easy way to get form value [1].
Ticket #10427 is already closed as fixed, but the fix is only partial. It is now possible to get the value from BoundField, but the value might be a DB primary key or something else not usable for displaying to user. To fix this issue, so that it is possible to render a form in show- only-data state, I propose two additions: 1. form widgets should receive additional method, display_value(name, value, attrs=None). This method returns the value given in human preferred format. For TextInput this would be simply: <div id="display_%(name)s">%(value)s</div> For more complex fields, like SelectMultiple, the display_value would know how to render the values correctly: If values are (1, 3) the output could be something like: <div id="display_%(name)s"><ul><li>text_representing_choice_1</ li><li>text_representing_choice_3</li></ul></div> 2. BoundFields would get additional property display_value, which would return the BoundField's widget's display_value output. I am already using a version of Django patched to do this in production. My own feeling is that this is really useful. So, now I am asking that if this is 1) Something that would be included in Django core (#10427 suggests so). 2) Does the approach seem valid. 3) What to do with FileFields. 4) Is the wrapping in <div id="display_%(name)s"> tag sensible, or should it be something else. The code for my own version can be found from [2], but that code is not core ready, and it is a bit outdated, especially the tests part of it. A few pictures can never hurt my case, so here are some pictures of actual usage of the display_value. Sorry, the site is implemented in finnish, but the actual values are not the point... The first one is a form rendered simply by using a for loop and field.label and field.display_value. This is used for viewing data, the link "Muokkaa" in the upper left corner is a edit link. http://users.tkk.fi/akaariai/Screenshot-7.png The second picture is what you get when clicking the edit link. This is rendered with {{ form.as_table }}. http://users.tkk.fi/akaariai/Screenshot-8.png It is notable that select multiple fields are handled correctly and that the "Omistaja" field is actually an autocomplete field which has a totally different widget than usual select fields. Yet it is really easy to define display_value method for that widget, too. In general, this proposal will allow to easily make previews for forms, implement list - view - edit workflow for websites and in general to easily show the contents of any model - just define a ModelForm and display it. I hope to get some feedback before I start to write a patch for current Django trunk. The most work will be writing tests for this, so I would like to get the point 4) above (wrapping in <div>) correct on first try. - Anssi [1] http://code.djangoproject.com/ticket/10427 [2] https://github.com/akaariai/django/tree/ticket10427 -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.