Opened 3 years ago

Closed 3 years ago

#22533 closed New feature (fixed)

Allow overriding `label_suffix` on a per-field basis

Reported by: julen Owned by: julen
Component: Forms Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Django 1.6 onwards, BoundField.label_tag now includes form's label_suffix.

The docs mention that "You can also customize the label_suffix on a per-field basis using the new label_suffix parameter on label_tag()".

In order to customize this on a per-field basis, you'd use {{ field|label_tag:"=" }} from templates, where label_tag is a custom template filter which would return field.label_tag(label_suffix='=') for this example.

Since this is not an attribute stored by each field, you can only override it if you are manually rendering fields. This is not convenient if you are using other shortcuts such as {{ form.as_p }} — there's no way you can override the label_suffix on a per-field basis in that scenario.

I'd suggest to store label_suffix for each field, so it could be set when you instantiate the field as part of a form. BoundField.label_tag would then be able to be properly customized on a per-field basis. It would use:

  1. label_suffix from the keyword arguments, specified at run-time. If this is None,
  2. self.label_suffix, defined when adding the field to a form. If this is None,
  3. self.form.label_suffix, defined when instantiating the form.

Change History (6)

comment:1 Changed 3 years ago by Tim Graham

Triage Stage: UnreviewedAccepted
Type: UncategorizedNew feature
Version: 1.6master

comment:2 Changed 3 years ago by julen

Owner: changed from nobody to julen
Status: newassigned

comment:3 Changed 3 years ago by julen

Has patch: set

PR available for review at:
https://github.com/django/django/pull/2616

comment:4 Changed 3 years ago by Claude Paroz

The patch is in very good shape. A second pass by a native speaker would be nice for the docs/spelling (I've seen trully -> truly).

comment:5 Changed 3 years ago by julen

I've just fixed the spelling mistake and rebased master onto the branch (the PR has been updated).

comment:6 Changed 3 years ago by Tim Graham <timograham@…>

Resolution: fixed
Status: assignedclosed

In 5eb81ce44532596ecc1c781d93f3421a467a6206:

Fixed #22533 -- Added label_suffix parameter to form fields.

Fields can now receive the label_suffix attribute, which will override
a form's label_suffix.

This enhances the possibility to customize form's label_suffix, allowing
to use such customizations while using shortcuts such as
{{ form.as_p }}.

Note that the field's own customization can be overridden at runtime by
using the label_prefix parameter to BoundField.label_tag().

Refs #18134.

Note: See TracTickets for help on using tickets.
Back to Top