"readonly" fields don't display their "help_text" in admin
|Reported by:||jester||Owned by:||wamberg|
|Cc:||Triage Stage:||Ready for checkin|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
Steps to reproduce
- Define a Model, whose field(s) specify
class MyModel(Model): my_regular_field = CharField(max_length=255, help_text="this is my regular field") my_readonly_field = CharField(max_length=255, help_text="this is my readonly field")
- Define a ModelAdmin for your Model, including one of its fields in
class MyModelAdmin(ModelAdmin): fields = 'my_regular_field', 'my_readonly_field' readonly_fields = 'my_readonly_field', admin.site.register(MyModel, MyModelAdmin)
In the object view/edit screen, "My regular field" will have help text, "My readonly field" will not.
The expected behavior is that readonly fields will work just like "regular" fields, except their widget will be their plain value rather than a form element -- i.e., any string specified as "help_text" should be displayed after the field.
I don't dig very deep into the workings of the admin very often, and so, obviously, what I'm about to say may be entirely unhelpful. However, it appears that
helpers.AdminReadonlyField constructs a limited, faux field object, a dict, at
self.field, rather than assign the appropriate BoundField instance. This is perhaps because readonly fields are not available to it in
self.form.fields. In the template,
field.field.field.help_text fails, as the dict does not contain "help_text", (and I'm not sure where AdminReadonlyField would get it, anyway).
Change History (15)
comment:3 Changed 6 years ago by
|Patch needs improvement:||set|
|Triage Stage:||Unreviewed → Accepted|
comment:6 Changed 6 years ago by
|Patch needs improvement:||unset|
|Triage Stage:||Accepted → Ready for checkin|