Django : マイグレーション: Unique フィールドの追加

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Generated by Django 3.2.20 on 2023-07-24 06:36

from django.db import migrations, models

def advise_fill_advise_code(apps, schema_editor):
    """ instance.id => instance.advise_code と初期値にする"""
    Model = apps.get_model("studies", "Advise")
    for instance in Model.objects.all():
    instance.advise_code = str(instance.id)
    instance.save()

class Migration(migrations.Migration):
    dependencies = [
        ("studies", "0015_auto_20211108_1814"),
    ]

    operations = [
        migrations.AddField(
            model_name="advise",
            name="advise_code",
            field=models.CharField(
                # オリジナル:
                # help_text="(id)", max_length=6, unique=True, verbose_name="Advise Code"
                # 修正: null=True default=None とする
                help_text="(id)", max_length=6, null=True, default=None, unique=True, verbose_name="Advise Code"
            ),
            preserve_default=False,
        ),
        # 追加: advise_code (ユニーク) を設定する
        migrations.RunPython(inspadvise_fill_advise_code, reverse_code=migrations.RunPython.noop),

        # 追加: null=True default=None を抜く
        migrations.AlterField(
            model_name="advise",
            name="advise_code",
            field=models.CharField(help_text="(id)", max_length=6, unique=True, verbose_name="Advise Code"),
            preserve_default=False,
        ),
    ]