80941


Djangoで、

[code]

    import uuid
    
    class Hoge(models.Model):
        id = models.CharField(
            primary_key=True,
            default=uuid.uuid4().hex,
            editable=False,
            max_length=32,
        )
        # 略
    
[/code]

として、  
`python manage.py makemigrations`  
をすると、`- Alter field id on hoge`  
と表示され、adminでも反映されているのを確認できるが、  
もう一度`python manage.py makemigrations`とすると、何も変更を加えていないのに  
`- Alter field id on hoge`と再度表示される。  
また、`python manage.py makemigrations`をするたびに  
`- Alter field id on hoge`が表示される。


CC BY-SA 4.0
2021-08-19T07:32:16.853
80911
2021-08-21T02:16:59.157
47787
question
python python3 django
Djangoでidをuuidにするとmigrationがバグる


UUIDFieldにしたら直りました。

[code]

    id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False)
    
[/code]

`uuid.uuid4().hex`とするのが悪かったようです。  
毎回関数が実行されるから。


CC BY-SA 4.0
2021-08-21T02:16:59.157
80941
2021-08-21T02:16:59.157
47787
80911
answer