Opened 12 months ago
Last modified 12 months ago
#35093 closed New feature
Handling Special Characters in ORM Annotate Aliases — at Initial Version
Reported by: | Eyal Segal | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 3.2 |
Severity: | Normal | Keywords: | ORM, annotations |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Encountered a limitation in Django ORM when using annotations with column aliases containing special characters like apostrophes or spaces. For example:
Model.objects.annotate({"VALUE_WITH_APOSTROPHE'-2": Count('attribute_name')})
This generates a ValueError: Column aliases cannot contain whitespace characters. While SQL syntax allows such aliases, Django ORM does not, leading to a lack of flexibility and unexpected errors in ORM interactions.
Impact:
- Causes flow errors during higher-level ORM interactions.
- Limits application of ORM to real-world naming use cases.
- Decreases reliability and user experience when special characters are present.
Proposed Solution:
Enhance the ORM's handling of annotate aliases to allow common special characters, aligning with real-world naming scenarios. Options could include:
- Automatically transforming aliases before passing to SQL.
- Configurable rules for "safe" special characters at the ORM level.
Interested in community and maintainers' perspectives on potential solutions to provide ORM-level flexibility for end-user applications. Looking forward to contributing to the discussion and development of this feature.