직접 적용 makemigrations 장고 1.10를 사용하고 함수에 의해 반환 된 기본 값으로 필드의 데이터를 업데이트하지 않습니다 마이그레이션있어
..
당신이 기능을 쓸 수 있습니다 그 때문에 (데이터베이스의 값을 업데이트)를 달성한다
# -*- coding: utf-8 -*-
# Generated by Django A.B on YYYY-MM-DD HH:MM
from __future__ import unicode_literals
from django.db import migrations
import uuid
def gen_random(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
for row in MyModel.objects.all():
row.uuid = uuid.uuid4()
row.save(update_fields=['uuid'])
class Migration(migrations.Migration):
dependencies = [
('myapp', '0004_add_uuid_field'),
]
operations = [
# omit reverse_code=... if you don't want the migration to be reversible.
migrations.RunPython(gen_uuid, reverse_code=migrations.RunPython.noop),
]
출처 : Django Writing Migrations (populate_uuid_values.py)
기본 V alue는 해당 필드의 데이터베이스에 값이 없으면 ORM 계층이 반환하는 것입니다. makemigrations를 적용하고 마이그레이션하면 데이터베이스의 값이 변경되어서는 안됩니다. 필드 값을 변경하려는 경우이'https : // stackoverflow.com/questions/29787853/django-migrations-add-field-with-default-with-model'을 확인할 수 있습니다. –
@ArpitGoyal 이것은 DateField (또는 Time)가 아니므로,'auto_now'는 나를 위해 작동하지 않을 것입니다. – alexandernst
당신이 할 수있는 일은'null = False'와'blank = False'로 설정하고 마이그레이션을 실행하여 Django가 빈 필드에 값을 제공해야한다는 메시지를 보여주고'str ('random_message')' 껍데기에서 빠져 나온다. –