0
我用现有的行在我的表user_table中添加了一个新的uuid字段。由于竞争条件,我在迁移时收到“重复输入”错误。然后我遵循的步骤在这里: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
更新:我意识到我有一个列名称的差异,它现在必须工作:) row.uuid = uuid.uuid4()应该是行。 UUID_loc = uuid.uuid4();那对我来说很愚蠢 – plumSemPy