django.utils.translation.ugettext_lazy needs __add__ support
|Reported by:||Tai Lee <real.human@…>||Owned by:||nobody|
|Severity:||Normal||Keywords:||ugettext_lazy unicode concatenate|
|Cc:||real.human@…||Triage Stage:||Design decision needed|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
Description (last modified by ramiro)
The model fields defined in django.contrib.auth.models (and I assume other parts of django) use django.utils.translation.ugettext_lazy to specify the label (or another property from which the label is derived). The form field objects generated by form_for_* and ModelForm on these models return a django.utils.functional.__proxy__ object instead of a unicode object where ugettex_lazy is not used.
I have a few helper template tags which are trying to alter the form field label with a concatenation, which is throwing an error for form_for_model and ModelForm forms for django.contrib.auth.models.User (and other django/contrib models that use ugettext_lazy).
As the documentation doesn't recommend or require the use of ugettext_lazy in it's examples and tutorials when defining models and forms, this inconsistent behaviour seems less than ideal. If django.utils.functional.__proxy__ could be changed with an __add__ (and other?) methods to behave more like a string/unicode object, that would be good?
Change History (5)
comment:1 Changed 7 years ago by Simon Greenhill <dev@…>
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Design decision needed