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 |
```
--
Ticket URL: <https://code.djangoproject.com/ticket/33709>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
> 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 |
> ```
New description:
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 |
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/33709#comment:1>
* status: new => closed
* resolution: => duplicate
* component: Uncategorized => Database layer (models, ORM)
* type: Uncategorized => New feature
Comment:
Duplicate of #32674, see also a note in
[https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD docs].
--
Ticket URL: <https://code.djangoproject.com/ticket/33709#comment:2>
Comment (by Jeremy Lainé):
Sorry for the noise, I obviously missed the existing issue!
--
Ticket URL: <https://code.djangoproject.com/ticket/33709#comment:3>