Opened 4 months ago
Closed 4 months ago
#35521 closed New feature (wontfix)
Make it easy to add CSS classes to a `BoundField`
Reported by: | Matthias Kestenholz | Owned by: | nobody |
---|---|---|---|
Component: | Forms | Version: | 5.0 |
Severity: | Normal | Keywords: | |
Cc: | David Smith | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
It would be useful if there was an easy way to add CSS classes to the HTML element which is generated when rendering a BoundField
. I propose adding field_css_class
, similar to required_css_class
and error_css_class
. https://docs.djangoproject.com/en/5.0/ref/forms/api/#styling-required-or-erroneous-form-rows
Something like this has already been rejected in the past here: https://code.djangoproject.com/ticket/29189 . As I understand it the reason for the rejection was the upcoming templates-based form rendering and not really the feature itself. I may have missed the point though.
However, I still think there'd be some value in this even though we have templates-based renderers now. The div
(in the case of the div renderer) is generated here: https://github.com/django/django/blob/main/django/forms/templates/django/forms/div.html , so it's not just about overriding django/forms/field.html
if you want to avoid adding another nesting level. Also, css_classes
exists and is documented.
Code-wise I propose extending the css_classes
method as follows:
extra_classes = set(extra_classes or []) + if hasattr(self.form, "field_css_class"): + extra_classes.add(self.form.field_css_class) if self.errors and hasattr(self.form, "error_css_class"):
I'm willing to do the work if this is accepted.
Change History (2)
comment:1 by , 4 months ago
Cc: | added |
---|
comment:2 by , 4 months ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Read the recent discussion on the forum: https://forum.djangoproject.com/t/proposal-make-it-easy-to-add-css-classes-to-a-boundfield/32022
Will mark this ticket as wontfix for now as it sounds there are multiple approaches to consider here (including this PR https://github.com/django/django/pull/18266). Later when there is a concensus to one approach, we can either raise a new ticket or repurpose this one. Thank you for starting this discussion 👍
Hi Matthias,
Thank you for this proposal, to me this makes sense but I would like to hear David Smith's opinion here before accepting.
Generally, new features require a discussion on the Django forum to be accepted. It might be worth starting a discussion there to get feedback on the approach and see if anyone has an concerns. 👍