#35544: Readonly Widget Template
-------------------------------------+-------------------------------------
Reporter: Sven R. | Owner: nobody
Kunze |
Type: New | Status: new
feature |
Component: Forms | Version: dev
Severity: Normal | Keywords: widget readonly
Triage Stage: | admin
Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Hi everyone, recently I came across the following issue which already saw
some attention on StackOverflow.
All solutions I've seen so far circumvent a limitation of Django widgets:
these are not really aware of a readonly situation. There are specialized
readonly widgets for certain situations however there is no generic path
for a Widget designer to specify how a readonly version of a widget would
look like. Additionally there's is no easy way to override that behavior
(see my last response on the SO issue) in admin.
Admin, however, is just part of Django, so I would rather see a more
general approach here. Therefore, I propose the following.
Couldn't we define a ReadonlyAwareInput that allows the following:
{{{
class ReadonlyAwareInput(Input):
template_name = "django/forms/widgets/input.html"
readonly_template_name = "django/forms/widgets/readonly_input.html" #
new
def __init__(self, attrs=None, is_readonly=False):
self.is_readonly= is_readonly
if attrs is not None:
attrs = attrs.copy()
self.input_type = attrs.pop("type", self.input_type)
super().__init__(attrs)
def get_context(self, name, value, attrs):
context = super().get_context(name, value, attrs)
context["widget"]["type"] = self.input_type
context["is_readonly"] = self.is_readonly
return context
class PreviewFileInput(ReadonlyAwareInput):
template_name = "django/forms/widgets/preview_file.html"
readonly_template_name =
"django/forms/widgets/readonly_preview_file.html" # override new
readonly_template_name
def get_context(self, name, value, attrs):
.... # as usual
}}}
I am not sure if Admin's display_for_field could be replaced completely by
such a system. I my gut feeling is that it would allow customizing a lot
more.
What do you think about that solution?
Also see
- https://forum.djangoproject.com/t/feature-request-discussion-custom-
rendering-for-readonly-fields-in-admin/32009
- https://code.djangoproject.com/ticket/30577
- https://stackoverflow.com/questions/14832739/django-admin-how-to-
display-widget-on-readonly-field
--
Ticket URL: <https://code.djangoproject.com/ticket/35544>
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/01070190365010c5-be416829-ac53-4885-8864-8c8ba0330e6e-000000%40eu-central-1.amazonses.com.