If, in ModelAdmin, you could override the formatting/output of a read-only
field it would address this issue. Alternatively, as mentioned in the
comments of #14802, the idea of Fields having a method that is called by
admin to handle the read-only HTML rendering would also do the trick as is
related.
--
Ticket URL: <https://code.djangoproject.com/ticket/30577>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by Carlton Gibson):
Hi David.
This is interesting. I think I see where you're coming from but, could I
ask you to put together an minimal project that demonstrates exactly the
issue you're seeing — perhaps with some screenshots etc — so we can make
sure we're 100% clear?
I'm not sure about an adjustment here. I think it would depend on exactly
what's being proposed. Do you have a specific implementation idea?
It may be that there's a work-around.
bf39978a53f117ca02e9a0c78b76664a41a54745 introduced a check on the widget
for a `read_only` attribute, when rendering `AdminReadonlyField`
{{{
if field in self.form.fields:
widget = self.form[field].field.widget
# This isn't elegant but suffices for contrib.auth's
# ReadOnlyPasswordHashWidget.
if getattr(widget, 'read_only', False):
return widget.render(field, value)
}}}
If you were to override, `ModelAdmin.get_form()` to set a custom widget
(with `read_only=True) on the required field, when the user did not have
the `change` permission, you should 🤔 be able to leverage this to get the
behaviour you need. (If you could put together that test project it would
be easy enough to have a play with this...)
Given these questions, and that #14802 was closed as `wontfix`, I'm going
to close this as `needsinfo` right now. A sample project plus a proposal
is probably needed to progress. With just a sample project, asking on the
DevelopersMailingList might provide some help. Exploring the work-around
would be the shortest route forward.
--
Ticket URL: <https://code.djangoproject.com/ticket/30577#comment:1>
* status: new => closed
* resolution: => needsinfo
--
Ticket URL: <https://code.djangoproject.com/ticket/30577#comment:2>
* cc: Florian Demmer (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/30577#comment:3>
Comment (by Filipe):
Just ended up here while looking for a way to have a custom widget on a
read-only JSONField and bumping into `ReadOnlyPasswordHashWidget` hackery
on my own...
Wouldn't it be cleaner (and easy) to simple update
https://github.com/django/django/blob/main/django/contrib/admin/templates/admin/includes/fieldset.html#L16-L18
to check for an existing `field.readonly_widget` all the time?
--
Ticket URL: <https://code.djangoproject.com/ticket/30577#comment:4>
* cc: Carlos Palol (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/30577#comment:5>