Opened 7 years ago
Last modified 13 months ago
#27452 assigned New feature
Add Postgres serial field to contrib.postgres
Reported by: | Johannes Maron | Owned by: | InvalidInterrupt |
---|---|---|---|
Component: | contrib.postgres | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | info@…, InvalidInterrupt | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | yes |
Needs tests: | yes | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Since we have the beautiful contrib.postgres
package now, we can add a couple more Postgres specific fields, that are not supported by MySQL but handy to all the Postgres fan boys.
That being said, I guess it's a good idea to start with Serial
.
The PostgreSQL documentation: https://www.postgresql.org/docs/9.1/static/datatype-numeric.html describes the field as follows:
The data types
serial
andbigserial
are not true types, but merely a notational convenience for creating unique identifier columns (similar to the AUTO_INCREMENT property supported by some other databases).
Use Cases:
- Anywhere an automatic incrementing value is required, but a primary key is often (mis)used.
- Providing additional (user controlled) auto-incrementing values.
The primary benefit is that is isolates the primary key for the sole use of maintaining referential integrity.
Change History (23)
comment:1 Changed 7 years ago by
Description: | modified (diff) |
---|
comment:3 Changed 7 years ago by
Owner: | set to Johannes Maron |
---|---|
Status: | new → assigned |
comment:4 Changed 7 years ago by
Has patch: | set |
---|---|
Patch needs improvement: | set |
Triage Stage: | Unreviewed → Accepted |
comment:5 Changed 5 years ago by
Patch needs improvement: | unset |
---|
comment:6 Changed 5 years ago by
Patch needs improvement: | set |
---|
comment:7 Changed 4 years ago by
Patch needs improvement: | unset |
---|
comment:8 Changed 4 years ago by
Patch needs improvement: | set |
---|
comment:9 Changed 4 years ago by
Version: | 1.10 → master |
---|
comment:10 Changed 4 years ago by
Patch needs improvement: | unset |
---|
comment:11 Changed 4 years ago by
Needs tests: | set |
---|---|
Patch needs improvement: | set |
comment:12 Changed 4 years ago by
Cc: | InvalidInterrupt added |
---|
comment:13 follow-up: 14 Changed 4 years ago by
I closed my PR for now, due to a lack of interest. Since Django does support returning values since v3.0 everyone who needs such a field can build it. Yet, I don't have the time get the feature into Django for now.
comment:14 Changed 4 years ago by
Replying to Johannes Hoppe:
I closed my PR for now, due to a lack of interest. Since Django does support returning values since v3.0 everyone who needs such a field can build it. Yet, I don't have the time get the feature into Django for now.
Do you mind if I continue working on this using your branch? Handling sequence resets after loading fixtures will require changes to the DB backend.
comment:15 Changed 4 years ago by
Owner: | Johannes Maron deleted |
---|---|
Status: | assigned → new |
Latest comment from Johannes is clearly an invitation to help :-)
comment:16 Changed 4 years ago by
Owner: | set to InvalidInterrupt |
---|---|
Status: | new → assigned |
comment:18 Changed 3 years ago by
Needs tests: | set |
---|---|
Patch needs improvement: | set |
comment:19 Changed 3 years ago by
Needs tests: | unset |
---|---|
Patch needs improvement: | unset |
comment:20 Changed 3 years ago by
Hi, the new default patch depends on https://github.com/django/django/pull/11783. Maybe you would care to review this one, to get things moving along faster? Best Joe
comment:21 Changed 3 years ago by
Needs documentation: | set |
---|---|
Needs tests: | set |
comment:22 Changed 17 months ago by
Does this still make sense now that Django is using identity columns for *AutoField
s?
comment:23 Changed 13 months ago by
Claude, yes I think that the move to identity columns on Postgres made this feature even more desirable (e.g. #34131).
I opened a PR with an implementation that I am already using somewhere. It added a couple of tests and documentation too.
I guess this is a good starting point for a discussion.