Opened 3 years ago
Closed 3 years ago
#32869 closed Bug (worksforme)
Bug while migrating a OneToOneField to ForeignKey on PostgreSQL.
Reported by: | suhailvs | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 3.2 |
Severity: | Normal | Keywords: | postgres onetoonefield foreignkey |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Using PostgreSQL Database I changed a field from OneToOneField
to ForeignKey
::
from django.db import models from django.contrib.auth.models import User # Create your models here. class Customer(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
to
class Customer(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
after migrations, then i tried to create a Customer i got error:
IntegrityError at /admin/myapp/customer/add/ duplicate key value violates unique constraint "myapp_customer_user_id_key" DETAIL: Key (user_id)=(1) already exists. Request Method: POST Request URL: http://localhost:8001/admin/myapp/customer/add/ Django Version: 3.2.4 Exception Type: IntegrityError Exception Value: duplicate key value violates unique constraint "myapp_customer_user_id_key" DETAIL: Key (user_id)=(1) already exists. Exception Location: /home/donams/suhail/github/temp/test_unique/env/lib/python3.6/site-packages/django/db/backends/utils.py, line 84, in _execute Python Executable: /home/donams/suhail/github/temp/test_unique/env/bin/python Python Version: 3.6.9 Python Path: ['/home/donams/suhail/github/temp/test_unique', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/donams/suhail/github/temp/test_unique/env/lib/python3.6/site-packages'] Server time: Mon, 21 Jun 2021 11:22:55 +0000
Note:
See TracTickets
for help on using tickets.
Thanks for the report, however, it works for me. Django drops a unique constraint when altering
OneToOneField
to theForeignKey
, e.g.(I used
test_32869
instead ofmyapp
.)