You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
|
|
import uuid
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
|
def fill_mymodel_uuid(apps, schema_editor):
|
|
db_alias = schema_editor.connection.alias
|
|
MyModel = apps.get_model('core', 'User')
|
|
for obj in MyModel.objects.using(db_alias).all():
|
|
obj.uuid = uuid.uuid4()
|
|
obj.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
""" Change model with integer pk to UUID pk. This migration presumes there
|
|
are no db constraints (foreign keys) to this table.
|
|
"""
|
|
|
|
dependencies = [
|
|
('core', '0074_remove_session_plan_remove_session_user_and_more'),
|
|
]
|
|
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='user',
|
|
name='uuid',
|
|
field=models.UUIDField(null=True),
|
|
),
|
|
migrations.RunPython(fill_mymodel_uuid, migrations.RunPython.noop),
|
|
migrations.AlterField(
|
|
model_name='user',
|
|
name='uuid',
|
|
field=models.UUIDField(default=uuid.uuid4, serialize=False, editable=False, unique=True),
|
|
),
|
|
migrations.RemoveField('User', 'id'),
|
|
migrations.RenameField(
|
|
model_name='user',
|
|
old_name='uuid',
|
|
new_name='id'
|
|
),
|
|
migrations.AlterField(
|
|
model_name='user',
|
|
name='id',
|
|
field=models.UUIDField(primary_key=True, default=uuid.uuid4, serialize=False, editable=False, unique=True),
|
|
),
|
|
]
|