Я добавил новое поле uuid в таблицу, user_table, с существующими строками. Из-за состояния гонки я получаю ошибку «Дублировать запись» при переносе. Я последовал шагов здесь:Django: Дублированная запись в uuid4
http://django.readthedocs.org/en/latest/howto/writing-migrations.html
Теперь моя первая и вторая миграция бежать, но мои последние миграции дают мне ту же ошибку. Мои 3 Миграции в ссылку следующим образом:
миграции '0009_label'
from __future__ import unicode_literals
from django.db import models, migrations
import uuid
class Migration(migrations.Migration):
dependencies = [
('app', '0008_label'),
]
operations = [
migrations.AddField(
model_name='user_table',
name='UUID_loc',
field=models.UUIDField(default=uuid.uuid4, null=True),
),
migrations.AlterField(
model_name='another_table',
name='Time',
field=models.CharField(default=0, max_length=3),
),
]
миграции '0010_label'
from __future__ import unicode_literals
from django.db import migrations, models
import uuid
def gen_uuid(apps, schema_editor):
MyModel = apps.get_model('app', 'user_table')
for row in MyModel.objects.all():
row.uuid = uuid.uuid4()
row.save()
class Migration(migrations.Migration):
dependencies = [
('app', '0009_label'),
]
operations = [
# omit reverse_code=... if you don't want the migration to be reversible.
migrations.RunPython(gen_uuid, reverse_code=migrations.RunPython.noop),
]
миграции '0011_label'
from __future__ import unicode_literals
from django.db import models, migrations
import uuid
class Migration(migrations.Migration):
dependencies = [
('app', '0010_label'),
]
operations = [
migrations.AlterField(
model_name='user_table',
name='UUID_loc',
field=models.UUIDField(default=uuid.uuid4, unique=True),
),
]
Связь была очень важно для меня, но, к сожалению, я получаю ту же ошибку. Теперь я застрял здесь, где мои таблицы имеют поле UUID_loc, но оно еще не уникально, т. Е. Третья миграция еще не запущена. Может ли кто-нибудь прокомментировать? Спасибо.
Благодарим вас за ответ, но я все равно получаю ту же ошибку:/ – plumSemPy
UPDATE: Я понял, что у меня было несоответствие имени столбца, оно должно работать сейчас :) row.uuid = uuid.uuid4() должен быть строкой. UUID_loc = uuid.uuid4(); это было глупо со мной – plumSemPy