Opened 5 months ago
Last modified 8 days ago
#35521 assigned New feature
Allow overriding BoundField class on forms and fields
Reported by: | Matthias Kestenholz | Owned by: | Christophe Henry |
---|---|---|---|
Component: | Forms | Version: | 5.0 |
Severity: | Normal | Keywords: | |
Cc: | David Smith, Oxan van Leeuwen, Christophe Henry, Carlton Gibson | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | yes |
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 (7)
comment:1 by , 5 months ago
Cc: | added |
---|
comment:2 by , 5 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 👍
comment:3 by , 5 weeks ago
Resolution: | wontfix |
---|---|
Status: | closed → new |
I'd like to reopen for review again. I think there is a consensus on the thread to pursue the BoundField customisation, with any details OK to be resolved on a PR.
comment:4 by , 5 weeks ago
Cc: | added |
---|---|
Summary: | Make it easy to add CSS classes to a `BoundField` → Allow overriding BoundField class on forms and fields |
Triage Stage: | Unreviewed → Accepted |
Adding folks who were cc-ed on #35192
Thank you all for the discussion
comment:5 by , 4 weeks ago
Has patch: | set |
---|
comment:6 by , 3 weeks ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:7 by , 8 days ago
Patch needs improvement: | set |
---|
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. 👍