#24893: Django migrations don't add unique constraint for field that is changed
from primary_key to unique
----------------------------+--------------------
Reporter: jbzdak | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 1.8
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+--------------------
This is related to #24892 and uses the same code (I have attached sample
project there)
Copy-pasted description of problem:
> To cut long story short: in a small application I had models using
domain level primary keys, that were strings, I wanted to introduce
synthetic primary keys.
>
> Here are models before migration (I have updated `int_pk` to be unique).
>
> {{{
> class Foo(models.Model):
>
> string_pk = models.CharField(
> max_length=10,
> primary_key= True
> )
>
> int_pk = models.IntegerField(
> null=True
> )
>
> class Meta:
>
> db_table = "FOO"
>
> }}}
>
> Models after migration:
>
> {{{
> class Foo(models.Model):
>
> string_pk = models.CharField(
> max_length=10,
> unique = True
> )
>
> int_pk = models.AutoField(
> primary_key=True
> )
>
> class Meta:
>
> db_table = "FOO"
> }}}
>
> Generated migration:
>
> {{{
>
> class Migration(migrations.Migration):
>
> dependencies = [
> ('testapp', '0002_foo_int_pk'),
> ]
>
> operations = [
> migrations.AlterField(
> model_name='foo',
> name='int_pk',
> field=models.AutoField(primary_key=True, serialize=False),
> ),
> migrations.AlterField(
> model_name='foo',
> name='string_pk',
> field=models.CharField(max_length=10, unique=True),
> ),
> ]
> }}}
I have changed field `string_pk` from `primary_key=True` to `unique=True`,
generated migration (when I manually fixed error from #24892) didn't
create unique constraint (previously there were a primary key constraint,
that was dropped but there were no unique key generated).
This can be (worked-around) by generating another migration with two
`migrations.AlterField` one that sets `unique=False` and another that sets
`unique=True`.
--
Ticket URL: <https://code.djangoproject.com/ticket/24893>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.cc50faa7194ac20a5d89cfc8cf8baf6d%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.