#35953: Add composite PK admin support
-------------------------------------+-------------------------------------
Reporter: Csirmaz Bendegúz | Type: New
| feature
Status: new | Component:
| contrib.admin
Version: dev | Severity: Normal
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
This is a follow up to #373 (''CompositePrimaryKey'').
My proposal is to separate the primary key fields with a comma e.g.
`/admin/posts/post/foo,bar/change`.
The comma is not escaped when used as a separator, but it is escaped
(`%2C`) when part of the primary key's value.
e.g. `pk = ("The,quick", "brown")` ->
`/admin/posts/post/The%2Cquick,brown/change`
According to [
https://datatracker.ietf.org/doc/html/rfc3986 RFC 3986],
unesacped commas are allowed in URI paths (as far as I understand).
What if an existing, non-composite primary key contains a comma?
''While Django URL encodes commas in the admin URLs (see `QUOTE_MAP`), it
must be able to look up objects by not-encoded PKs too.
The solution is simple. We must check if the model the user is trying
access has a composite primary key or not.''
Since admin's `LogEntry` model uses ''"generic foreign keys"'', this
ticket depends on #35941 (''composite GenericForeignKeys'').
--
Ticket URL: <
https://code.djangoproject.com/ticket/35953>
Django <
https://code.djangoproject.com/>
The web framework for perfectionists with deadlines.