Opened 3 years ago
Last modified 3 years ago
#33709 closed New feature
Primary key of m2m tables is not migrated to BigAutoField — at Version 1
Reported by: | Jeremy Lainé | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 3.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
I am trying to upgrade an existing application's models to use only "bigint" primary keys on postgresql. To do this I changed DEFAULT_AUTO_FIELD to BigAutoField, generated the migrations then applied them.
The tables for my explicitly defined models get upgraded correctly. The many-to-many intermediate tables on the other hand still have an "integer" primary key, with the 32bit limit I'm trying to avoid.
The following model are sufficient to reproduce the issue:
class Book(models.Model): name = models.CharField(max_length=255) tags = models.ManyToManyField("Tag") class Tag(models.Model): name = models.CharField(max_length=255)
The resulting schema for the testapp_book_tags looks like:
test=> \d testapp_book_tags; Table "public.testapp_book_tags" Column | Type | Collation | Nullable | Default ---------+---------+-----------+----------+----------------------------------------------- id | integer | | not null | nextval('testapp_book_tags_id_seq'::regclass) book_id | bigint | | not null | tag_id | bigint | | not null |