Changes between Initial Version and Version 1 of Ticket #34151, comment 10


Ignore:
Timestamp:
Jan 17, 2023, 10:27:25 AM (2 years ago)
Author:
Bhuvnesh

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #34151, comment 10

    initial v1  
    1 The migration generated for this contains removing the old pk and adding new pk :
    2 {{{
    3 class Migration(migrations.Migration):
    4 
    5     dependencies = [
    6         ("ticket_34151", "0001_initial"),
    7     ]
    8 
    9     operations = [
    10         migrations.RemoveField(
    11             model_name="place",
    12             name="id",
    13         ),
    14         migrations.RemoveField(
    15             model_name="storechain",
    16             name="id",
    17         ),
    18         migrations.AddField(
    19             model_name="place",
    20             name="uid",
    21             field=models.UUIDField(
    22                 default=uuid.uuid4,
    23                 editable=False,
    24                 primary_key=True,
    25                 serialize=False,
    26                 unique=True,
    27             ),
    28         ),
    29         migrations.AddField(
    30             model_name="storechain",
    31             name="uid",
    32             field=models.UUIDField(
    33                 default=uuid.uuid4,
    34                 editable=False,
    35                 primary_key=True,
    36                 serialize=False,
    37                 unique=True,
    38             ),
    39         ),
    40     ]
    41 }}}
    42 but on some databases (mysql, postgres) we cannot delete a pk of a model which is referenced by other.
    43 I tried to implement a solution([https://github.com/django/django/pull/16325 draft PR] ) which is working fine for sqlite3 but throws the following error on some dbs (mysql, postgres) during the RemoveField operation:
    44 {{{
    45 (1829, "Cannot drop column 'id': needed in a foreign key constraint 'ticket_34151_storech_placespk_id_ca7ce831_fk_ticket_34' of table 'ticket_34151_storechain'")
    46 }}}
    47 This made me think if it is really possible to add a new pk to a referenced model for dbs like mysql and postgres?
     1I tried to implement a solution in a [https://github.com/django/django/pull/16325 draft PR] . Any input is appreciable.
Back to Top